Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 重构jQuery,使其淡出并阻止浏览器崩溃_Javascript_Jquery - Fatal编程技术网

Javascript 重构jQuery,使其淡出并阻止浏览器崩溃

Javascript 重构jQuery,使其淡出并阻止浏览器崩溃,javascript,jquery,Javascript,Jquery,这个js可以工作,但过了一段时间,它会使任何打开的浏览器崩溃。我必须关闭一些循环吗 我还想将幻灯片效果更改为淡入/淡出(仅替换。slideDown不起作用)。想法 function ticker() { $('#jsTicker li:first').slideUp(function() { $(this).appendTo($('#jsTicker')).slideDown(1500); }); } setInterval(ticker, 6000); 不要使

这个js可以工作,但过了一段时间,它会使任何打开的浏览器崩溃。我必须关闭一些循环吗

我还想将幻灯片效果更改为淡入/淡出(仅替换。slideDown不起作用)。想法

function ticker() {
    $('#jsTicker li:first').slideUp(function() {
        $(this).appendTo($('#jsTicker')).slideDown(1500);
    });
}
setInterval(ticker, 6000);

不要使用
setInterval()
。您没有考虑动画的异步行为

使用
setTimeout()


不要使用
setInterval()
。您没有考虑动画的异步行为

使用
setTimeout()


setInterval
基本上是一个无限循环

当前函数不会等待slideUp完成后再重新启动

请改用
setTimeout
尝试此操作:

(function() {
    var tickerTimer;
    function ticker() {
        clearTimeout(tickerTimer);
        $('#jsTicker li:first').slideUp(function() {
            $(this).appendTo($('#jsTicker')).slideDown(1500, function(){
                tickerTimer = setTimeout(ticker, 6000);
            });
        });   
    }
    tickerTimer = setTimeout(ticker, 6000);
})();

setInterval
基本上是一个无限循环

当前函数不会等待slideUp完成后再重新启动

请改用
setTimeout
尝试此操作:

(function() {
    var tickerTimer;
    function ticker() {
        clearTimeout(tickerTimer);
        $('#jsTicker li:first').slideUp(function() {
            $(this).appendTo($('#jsTicker')).slideDown(1500, function(){
                tickerTimer = setTimeout(ticker, 6000);
            });
        });   
    }
    tickerTimer = setTimeout(ticker, 6000);
})();


在我这方面似乎工作得很好。我不认为上下滑动会使浏览器崩溃。把它改成淡色,看看是否有改进。我试过小提琴,它看起来很好。哪个浏览器会崩溃?在我这方面似乎工作得很好。我看不出上下滑动怎么会使浏览器崩溃。把它改成淡色,看看是否有改进。我试过小提琴,它看起来很好。哪个浏览器会崩溃?为什么
4500
?随机数?你有一个输入错误--
ticker
,而不是
ticket
。他希望动画每6000毫秒出现一次。如果向下滑动需要1500毫秒,则只需要4500毫秒就可以达到6000。更正了输入错误,但为什么2次设置超时?还有,让它淡入淡出而不是滑动怎么样?@KevinOrin一两个也没什么区别,我可以调用一个函数来触发
setTimeout()
。您需要首先调用函数,可以立即调用,也可以在6000毫秒后调用,正如您的逻辑已经暗示的那样。另外,
fade()
有什么问题吗?元素需要在DOM中可见和淡出,然后才能淡出。那么,我不能淡出第一项并淡出第二项,为什么
4500
?随机数?你有一个输入错误--
ticker
,而不是
ticket
。他希望动画每6000毫秒出现一次。如果向下滑动需要1500毫秒,则只需要4500毫秒就可以达到6000。更正了输入错误,但为什么2次设置超时?还有,让它淡入淡出而不是滑动怎么样?@KevinOrin一两个也没什么区别,我可以调用一个函数来触发
setTimeout()
。您需要首先调用函数,可以立即调用,也可以在6000毫秒后调用,正如您的逻辑已经暗示的那样。另外,
fade()
有什么问题吗?元素需要在DOM中可见和淡出,然后才能淡出它。所以我不能淡出第一项和淡出吗following@KevinOrin什么褪色?我也希望它褪色而不是褪色slide@KevinOrin所以淡出。使用淡出。@KevinOrin记得你每次都在添加
1500
msec(大约1.5秒)--对我来说效果很好:@KevinOrin什么淡出?我也希望它淡出,而不是slide@KevinOrin所以淡出。使用淡出。@KevinOrin记得你每次都在添加
1500
msec(大约1.5秒)--对我来说效果很好: