编码 :
function startTimer() {
var i = 0;
var TimeInterval = setInterval(function () {
$("#Time").html(i++);
}, 1000);
setTimeout(function () {
clearInterval(TimeInterval);
}, 2000);
}
我的问题是它$("#Time").html(i++)
总是 0 而不是递增
编码 :
function startTimer() {
var i = 0;
var TimeInterval = setInterval(function () {
$("#Time").html(i++);
}, 1000);
setTimeout(function () {
clearInterval(TimeInterval);
}, 2000);
}
我的问题是它$("#Time").html(i++)
总是 0 而不是递增
<!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>
设置超时应该从你的代码中删除然后它会工作。见上面的代码。它工作
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
首先被递增,然后被评估。
function startTimer() {
var i = 0;
var TimeInterval = setInterval(function () {
$("#Time").html(i++);
}, 1000);
setTimeout(function () {
clearInterval(TimeInterval);
}, 120000);
}
此代码每秒递增 html,直到 2 分钟过去 :)
我认为这是最简单的,只需一个重新安排自身的超时:
function countForTwoMins() {
var count = 1,
timer = function () {
$("#Time").html(count++);
};
window.setTimeout(function() {
timer();
if (count < 120) {
window.setTimeout(arguments.callee, 1000);
}
}, 1000);
}
countForTwoMins();
当然,如果您关心 arguments.callee 被弃用:
function countForTwoMins() {
var count = 1,
function callback () {
$("#Time").html(count++);
if (count < 120) {
window.setTimeout(callback, 1000);
}
}
window.setTimeout(callback, 1000);
}