计数器问题,javascript

时间:2015-04-21 09:04:44

标签: javascript

我想制作一个计数器(每秒钟计数一次)。我正在尝试使用计时事件,但它不起作用

<!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 ...

6 个答案:

答案 0 :(得分:1)

setTimeoutsetInterval会在调用时立即返回计时器事件的句柄 - 而不是您期望的值。

如果要检索值,则需要使用回调,全局变量等。

答案 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

&#13;
&#13;
var count = document.getElementById('count');
var i = 0;
setInterval(function() {
  count.innerHTML = i;
  i++;
}, 1000);
&#13;
<div id='count'>--</div>
&#13;
&#13;
&#13;

使用clearInterval

&#13;
&#13;
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;
&#13;
&#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>