2 glennpallad GlennPallad 于 2014.11.13 09:18 提问

我修改了一个javascript函数,功能一样,但不能正常运行 。

原函数来自《Javascript DOM 编程艺术(第二版)》

这里是原函数:

http://paste.ubuntu.com/8963863/

相对应的HTML代码和另外两个运行所需的函数如下:

HTML:

http://paste.ubuntu.com/8964733/

两个运行要调用的函数:

http://paste.ubuntu.com/8964726/
http://paste.ubuntu.com/8964748/

以下是我修改之后的函数,我检查后觉得没有问题,但不能运行,不知道是哪里错了,

http://paste.ubuntu.com/8963930/

3个回答

showbo
showbo   Ds   Rxr 2014.11.18 14:58
已采纳

setTimeout第一个参数是字符串时,你的函数需要是全局作用域下能访问到的,你那样申明只能在moveElement2中访问到
moveElement 改成下面这样
window.moveElement = function (elementID, final_x, final_y) {

或者setTimeout的repeat参数改成这样

var repeat = function () { moveElement(e,f,g)}; // "moveElement('" + e + "'," + f + "," + g + ")";
setTimeout(repeat, h);

save4me
save4me   Ds   Rxr 2014.11.19 13:38

你在浏览器按F12打开开发者工具,在控制台看看有没有错误。
你positionMessage调用的是moveElement,但moveElement是moveElement2函数内的,不能调用。
另外你moveElement2再封装一层目的是什么?你也没给setTimeout传入时间间隔参数。

save4me
save4me   Ds   Rxr 2014.12.18 10:41

上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!