別のページで同じ 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がnullであると言っています。渡されたオブジェクトには、速度プロパティがある場合とない場合があります。だから私の推測では、それが存在しない場合、IEでnullとして認識されます。これを回避する方法はありますか。毎回オブジェクトに速度プロパティを追加する必要はありません。
speed = a.speed と言って考えました ? a.速度: 600; a.speed が存在しない場合は、600 に設定されます。
アップデート:
setTimout と関係があるのではないかと思います。2 つのページの唯一の違いは、関数が同時に 3 回呼び出されることです。それが機能するページでは、animateTo 関数の呼び出しが間隔を空けて表示されます。次々と呼び出すと、速度がnullになるか、IEだけのオブジェクトではないようです。
また、setTimout 内で変数を移動しても、そのエラーは発生しませんでした。しかし、私は setTimout 関数の外に del 変数を残す必要があり、そうするとエラー del is null or not and object in IE が表示されます。
最初の呼び出しでは setTimout が機能し、a.speed を読み取ることができるように見えますが、最初の setTimeout がまだ周りにないローカル変数を見つけようとしているため、2 番目の呼び出し a.speed は null です。少なくともそれが私の理論です。誰もがこれに関するアイデアを持っています。