我的非常简单的循环虽然不起作用,但似乎问题来自setTimeout。 我尝试用倒计时编写一个小游戏。
while ( there is time ) {
// actions possible to do
//my timer function
}
所以如果c是时间
var c = 30;
while (c > 0)
{
c -= 1;
setTimeout( $("#timer").html(c) , 1000);
};
这不仅仅是倒计时,但用户必须能够在倒计时期间采取行动。 谢谢你的帮助!
答案 0 :(得分:5)
setTimeout
期望函数作为其第一个参数。当时间结束时将调用此函数。但是,您在示例代码中提供的是调用$("#timer").html(c)
使用setTimeout
的正确方法应该是:
setTimeout(function() {
// blah blah
}, 1000);
我猜你要做倒计时之类的事情,这是一个示例代码:
function countdown(count, container) { // declare the countdown function.
var $container = $(container);
(function step() {
$container.html(count); // set the timer html
if (count-- > 0) { // decrement counter and stop when counter reaches 0
setTimeout(step, 1000); // if counter is not 0, then issue the next timeout
}
})(); // call step immediately
}
countdown(10, '#timer');
现场演示位于http://jsfiddle.net/cazSn/2/
PS:如果你真的想要实现倒计时,使用setInterval
会更容易。
答案 1 :(得分:2)
setInterval
会更好。
var c = 100;
var intervalID = setInterval(function(){
if (c>0){
$("#timer").html(c);
c--;
} else {
clearInterval(intervalID);
}
}, 1000);
答案 2 :(得分:0)
我无法理解您使用该循环和c
变量做了什么,但是您滥用了setTimeout
函数
setTimeout( 1000, function(){$("#timer").html(c)};
或者不推荐的方式:
setTimeout('$("#timer").html(c)', '1000';