我想制作一个计数器(每秒钟计数一次)。我正在尝试使用计时事件,但它不起作用
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var i=0;
function Time(){
seconds = setInterval(function(){
i++;
}, 1000);
return {label:seconds};
}
console.log(setTimeout(Time, 1000));
</script>
</body>
</html>
它只显示第一次迭代,也从2开始而不是1 ...
答案 0 :(得分:1)
setTimeout
和setInterval
会在调用时立即返回计时器事件的句柄 - 而不是您期望的值。
如果要检索值,则需要使用回调,全局变量等。
答案 1 :(得分:1)
您的解决方案打印setTimeout
的输出,这是超时标识符。这将有效:
var i = 0;
function Time()
{
i ++;
console.log(i);
}
setInterval( Time, 1000 );
答案 2 :(得分:1)
那是因为您只记录第一次调用的结果值Time
方法。此外,您要将seconds
分配给返回ID的setInterval
的返回值。
如果您想每秒返回一个值,请将代码更新为:
var _seconds = 0;
function Time(callback){
setInterval(function(){
callback(++_seconds);
}, 1000);
}
Time(function(seconds){
console.log(seconds);
});
答案 3 :(得分:0)
setTimeout将返回计时器ID而不是返回值。请尝试此
setInterval(function () {
console.log(++i);
}, 1000);
答案 4 :(得分:0)
此处,setInterval
不返回seconds
的值,而是返回id
。
您只需要setInterval
:
var count = document.getElementById('count');
var i = 0;
setInterval(function() {
count.innerHTML = i;
i++;
}, 1000);
&#13;
<div id='count'>--</div>
&#13;
使用clearInterval
:
var count = document.getElementById('count');
var i = 0;
var id = setInterval(function() {
count.innerHTML = i;
i++;
if (5 < i)
clearInterval(id);
}, 1000);
&#13;
<div id='count'>--</div>
&#13;
答案 5 :(得分:0)
感谢所有有用的输入。 我将代码修改为我的想法:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var i=0;
function Time(){
i++;
console.log(i);
setTimeout(Time, 1000);
}
Time();
</script>
</body>
</html>