Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在setInterval函数中使用时,Jquery延迟不一致_Javascript_Jquery_Setinterval_Fadein - Fatal编程技术网

Javascript 在setInterval函数中使用时,Jquery延迟不一致

Javascript 在setInterval函数中使用时,Jquery延迟不一致,javascript,jquery,setinterval,fadein,Javascript,Jquery,Setinterval,Fadein,我想用jqueryfadein函数逐个淡入页面的不同元素。它正在工作,但两个fadeIn之间的延迟不一致。随机地,一些元素比其他元素出现得更快。我做错了什么?我使用以下代码来实现这一点 setInterval(function(){ $('.showTime .appr').each(function(index){ $(this).delay(500*index).fadeIn(400); }); }, 50); 注意:之所以使用setInterval函数,是

我想用jqueryfadein函数逐个淡入页面的不同元素。它正在工作,但两个fadeIn之间的延迟不一致。随机地,一些元素比其他元素出现得更快。我做错了什么?我使用以下代码来实现这一点

setInterval(function(){
    $('.showTime .appr').each(function(index){
        $(this).delay(500*index).fadeIn(400);
    });
}, 50);
注意:之所以使用setInterval函数,是因为我正在等待其他函数将类“showTime”添加到body标记中。

通过使用,即使在添加了.showTime类之后,也会导致每50毫秒调用一次此代码,这会导致您看到的奇怪行为。如果将setInterval的结果赋给一个变量,则在添加类后,可以对该变量使用,并且选择器返回DOM元素:

// track the interval so we can clear it
var myInterval;
myInterval = setInterval(function(){
    // try to match elements with the selector
    var elements = $('.showTime .appr');
    // if the length is non-zero...
    if ( elements.length ){
        // clear the interval
        clearInterval(myInterval);
        // run your code
        $('.showTime .appr').each(function(index){
            $(this).delay(500*index).fadeIn(400);
        });
    }
}, 50);

尽管如此,这可能不是最好的设计模式-最好使用回调,而不是轮询并消耗CPU。

每50毫秒反复调用此代码是个坏主意。至少在找到要等待的类后清除间隔。不应该使用setInterval来等待某些内容。最好显式地获得一个回调,以便在准备就绪时调用。至少,一旦你找到了什么东西,就停止间歇!是的,我知道这不是一种优雅的方法,但我不能使用回调,因为调用“showtime”类的函数是在其他地方编写的,我不允许编辑该函数。我认为setInterval是一种轮询,每50毫秒检查一次要添加的类。“这是不可能做到的。”詹姆斯蒙塔涅说得很好,在问题中没有抓住这一点。虽然仍然是问题的原因,但我会更新它。你帮了我很多麻烦!工作起来很有魅力!我记录并检查了它的运行次数,不超过6-7次!谢谢!太好了,既然这个词对你有用,你介意把它作为答案吗?谢谢