带有for循环的简单倒计时

时间:2013-01-18 13:18:43

标签: javascript

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

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

5 个答案:

答案 0 :(得分: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

答案 1 :(得分: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()方法为浏览器留出一些时间来实际呈现您的修改(并让用户看到它)。

答案 2 :(得分:1)

在for循环中使用','更改';'

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

答案 3 :(得分:1)

setTimeout的另一个递归版本:

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

DEMO: http://jsfiddle.net/DgWgx/

答案 4 :(得分:0)

进行倒计时时,请确保开始和结束元素正确无误。

数起:

var ctx = Request.GetOwinContext();
var cl2 = ctx.Authentication.User.Claims; // here there is no claims

0到

倒计时不正确:

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

10到

正确倒计时:

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

9变为0