1

嗨,我正在尝试创建一个简单的倒计时。
这是我的代码,但它不起作用。
你能帮我找出问题吗?

function count() {
    for (var cc=20,cc > 0,cc--) {
        document.getElementById("cco").innerHTML=cc;
    }
}
count();
4

5 回答 5

11

您使用的是逗号而不是分号。

for (var cc=20,cc > 0,cc--)

应该

for (var cc=20;cc > 0;cc--)

然而,这可能不会像你想象的那样做,因为循环会立即一直计数到 0(所以用户甚至不会看到倒计时)。我猜你想要类似的东西:

var cc = 20;

var interval = setInterval(function()
{
    document.getElementById("cco").innerHTML = -- cc;

    if (cc == 0)
        clearInterval(interval);

}, 1000);

有关详细信息,请参阅setIntervalclearInterval

于 2013-01-18T13:20:29.517 回答
4

有(至少)两个错误。

第一个是语法:在 for 循环中,参数由分隔;而不是分隔,。语法正确的代码如下所示:

function count() {
  for (var cc=20;cc > 0;cc--) {
    document.getElementById("cco").innerHTML=cc;
 }
}

其次,您没有倒计时,而是一遍又一遍地覆盖相同的元素,没有任何时间让用户看到结果。

更好的方法是在setTimeout()这里使用,它看起来像这样:

var cc = 20;
function count() {
  document.getElementById("cco").innerHTML=cc;
  if ( cc > 0 ) {
    setTimeout( count, 1000 );
  }
}

setTimeout( count, 1000 );

setTimeout()方法为浏览器留出了一些时间来实际呈现您的修改(并让用户看到它)。

于 2013-01-18T13:24:08.943 回答
1

','在你的';'for 循环中更改

function count() {
  for (var cc=20;cc > 0;cc--) {
    document.getElementById("cco").innerHTML=cc
  }
}
count();
于 2013-01-18T13:20:25.957 回答
1

另一个递归版本setTimeout

(function count(cc) {
  document.getElementById("cco").innerHTML = cc;
  if (cc > 0)
    setTimeout(function() { count(--cc); }, 1000);
})(10);

演示:http: //jsfiddle.net/DgWgx/

于 2013-01-18T13:27:44.320 回答
0

倒计时时确保开始和结束元素是正确的。

计数:

for (var x=0;x < 10;x++) console.log(x);

0 到 9

倒计时错误:

for (var x=10;x > 0;x--) console.log(x);

10 到 1

正确倒计时:

for (var x=10-1;x >= 0;x--) console.log(x);

9 到 0

于 2017-06-07T13:24:21.440 回答