对于具有超时的循环似乎不起作用并给出奇怪的数字

时间:2017-05-13 21:07:55

标签: javascript html google-chrome

我想在javascript中进行倒计时,使用简单的变量,for循环,设置超时。

我在尝试实时进行for循环更新时遇到困难(每秒)我现在在网页上得到-1。

//HTML PART

<p id=timer>0</p> 


//JS PART
var timer = 10; 
var text = "";

function f() {
    for (timer; timer > 0; timer--) {
    text += timer + "<br>";
    }
    timer--;
    if( timer > 0 ){
        setTimeout( f, 1000 );
    }
}
f();

document.getElementById("timer").innerHTML = timer;

请解释错误以及我是否犯了任何愚蠢的错误

2 个答案:

答案 0 :(得分:2)

看起来你想通过每秒更改一次值来显示10到0的定时器值。如果是这样,你可以这样做:
1.你需要在这个<p id="timer">0</p>左右的计时器周围加上引号来纠正你的HTML 你需要按照我的评论删除for循环。
3.在函数f()中移动document.getElementById("timer").innerHTML = timer;

&#13;
&#13;
var timer = 10;
//var text = "";

function f() {
  //for (timer; timer > 0; timer--) {
  //    text += timer + "<br>";
  //}
  document.getElementById("timer").innerHTML = timer;
  timer--;
  if (timer >=0) {
    setTimeout(f, 1000);
  }
}
f();
&#13;
<p id="timer">0</p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你可以这样做,我在代码中提供了注释以供解释:

var count = 10;
function timer(targetValue) {
    // display first number on screen
    document.getElementById("timer").textContent = count;

    // decrease count by 1
    count--;

    // check if timer is still grater than target value
    if (count >= targetValue) {
        // call timer() function every second to update
        setTimeout(timer, 1000, targetValue);
    }
}
timer(0);

从10减少到0。

想要从10倒数到5?只需使用timer(5)

即可