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