javascript计时器错误

时间:2010-11-09 04:46:50

标签: javascript timer

我开始制作一个计时器来显示人们在我的页面上的时间。问题是,它不是在计算秒数,而是在最后添加零。谁能告诉我哪里出错了?

<script language="javascript">
<!--
var seconds = 0
var minutes = 0
document.getElementById('timer').innerHTML = '0'
function Timer() {
    if ( seconds < 10 ) {
        seconds = "0" + seconds
    }
    else if ( minutes < 10 ) {
        minutes = "0" + minutes
    }
    else if ( seconds >= 59 ){
        seconds = 0
        minutes += 1
    }
    else
        seconds += 1
        document.getElementById('timer').innerHTML = "You've been on my blog for    "+minutes+" : "+seconds+" minutes."
        setTimeout("Timer()",1000)
}
//-->
</script>

2 个答案:

答案 0 :(得分:2)

是的,因为你正在连接一个字符串。 +运算符执行连接和添加。

"0" + foo  // concatenate the string "0" and foo
0 + foo    // add foo to 0 (given that both are numbers)

你的计时器错误的方式。您的脚本无法保证按时执行,执行中的任何轻微延迟都会使您累积错误的值。做一个计时器的正确方法是采取一个固定的开始时间,并以此为基础每隔一秒左右计算差异。

var start = Date.now();
function timer() {
    alert(((Date.now() - start) / 1000) + ' seconds elapsed');
}
setInterval(timer, 1000);

答案 1 :(得分:0)

您正在将变量类型切换为秒:

var seconds = 0  // integer type
....
seconds = "0" + seconds // now seconds is holding a string!

秒(和分钟)应该只是整数。

另外,只关注秒。之后,将其除以60以显示分钟数。秒%60将是剩余的秒数。