0

编码 :

function startTimer() {
  var i = 0;
  var TimeInterval = setInterval(function () {
    $("#Time").html(i++);
  }, 1000);
  setTimeout(function () {
    clearInterval(TimeInterval);
  }, 2000);
}

我的问题是它$("#Time").html(i++)总是 0 而不是递增

4

4 回答 4

1
<!DOCTYPE html>
<html>
<head>
<script type = 'text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js'></script>
<script>
(function startTimer() {//selef executing function
 var i = 0;
 var TimeInterval = setInterval(function () {
    $("#button").html(i++);
   }, 1000);
   })()//end of function
</script>
</head>
<body>
 <p id='button'></p>
 </body> 
</html>

设置超时应该从你的代码中删除然后它会工作。见上面的代码。它工作

于 2013-07-24T10:25:24.243 回答
0
function startTimer() {
  var i = 0;
  var TimeInterval = setInterval(function () {
    $("#Time").html(++i);
  }, 1000); // This will run every 1000ms == 1s
  setTimeout(function () {
    clearInterval(TimeInterval);
  }, 2000); // This is 2000 ms == 2s. 120000ms is 2min
}

我只是更改i++++i- 但不同之处可能是您想要的。

With i++,i首先被评估,然后递增 - with ++i,i首先被递增,然后被评估。

于 2013-07-24T09:56:10.633 回答
0
function startTimer() {
  var i = 0;
  var TimeInterval = setInterval(function () {
    $("#Time").html(i++);
  }, 1000);
  setTimeout(function () {
    clearInterval(TimeInterval);
  }, 120000);
}

此代码每秒递增 html,直到 2 分钟过去 :)

于 2013-07-24T09:57:26.170 回答
0

我认为这是最简单的,只需一个重新安排自身的超时:

function countForTwoMins() {
    var count = 1,
        timer = function () {
            $("#Time").html(count++);
        };
    window.setTimeout(function() {
        timer();
        if (count < 120) {
            window.setTimeout(arguments.callee, 1000);
        }
    }, 1000);
}

countForTwoMins();

http://jsfiddle.net/ybyu5/

当然,如果您关心 arguments.callee 被弃用:

function countForTwoMins() {
    var count = 1,

    function callback () {
        $("#Time").html(count++);
        if (count < 120) {
            window.setTimeout(callback, 1000);
        }
    }        
    window.setTimeout(callback, 1000);
}
于 2013-07-24T10:06:04.160 回答