嗨,我对以下代码感到困惑
JSfiddle link
for(var i=6;i>=0;i--)
{
setTimeout((function(i)
{
$("div").delay(4000).html(i);
alert(i); //if commented unable to see the countdown
})
(i),4000);
//alert(1);
}
我无法获得倒数计时器..什么是错误的...当评论“警报”时无法看到倒计时数字。 请有人解释上面的代码如何工作..发布一些正确的代码
答案 0 :(得分:5)
.delay()
仅适用于jQuery动画方法,而不适用于.html()
你的所有超时都会立刻被解雇 - 没有什么可以解决它们。
最终结果是(没有alert
)循环中的每次迭代立即运行,使div
包含0
无形(并且非常短暂地)包含其他数字来自以前的迭代。
试试这个,而不是:
function counter($el, n) {
(function loop() {
$el.html(n);
if (n--) {
setTimeout(loop, 1000);
}
})();
}
counter($('div'), 6);
答案 1 :(得分:0)
不要使用警报,因为警报会停止一切。使用console.log