我遇到了一个问题,即另一个页面上的相同 javascript 工作正常,但由于某种原因,在这个特定页面上它使用完全相同的代码引发错误。
我有一个函数可以更新并传递要更新的属性对象。
function animateTo(a,t){
var speed,easing,del,cb;
speed = a.speed ? a.speed : 600;
del = a.del ? a.del : 0;
setTimeout(function() {
t.stop(true).animate( { left:a.x, top:a.y, opacity:a.opacity }, { duration: speed, easing: easeOutExpo });
}, del);
}
在 IE 中它说 a.speed 是空的。传递的对象有时具有速度属性,有时没有。所以我的猜测是当它不存在时,它在 IE 中被识别为空。他们是解决这个问题的方法吗。无需每次都向对象添加速度属性。
我想通过说 speed = a.speed ?a.速度:600;如果 a.speed 不存在,它将设置为 600。
更新:
我认为这可能与 setTimout 有关。两个页面之间的唯一区别是函数同时被调用了 3 次。在它工作的页面上,animateTo 函数的调用被隔开。似乎当我一个接一个地调用它时,我得到的速度是空的,或者不是仅在 IE 中的对象。
此外,当我在 setTimout 中移动变量时,我没有收到该错误。但是我必须将 del 变量留在 setTimout 函数之外,当我这样做时,我得到一个错误 del is null or not and object in IE。
似乎在第一次调用时 setTimout 有效并且能够读取 a.speed 但第二次调用 a.speed 为空,因为第一次 setTimeout 仍在尝试查找不存在的局部变量。至少这是我的理论。任何人对此都有任何想法。