我开始制作一个计时器来显示人们在我的页面上的时间。问题是,它不是在计算秒数,而是在最后添加零。谁能告诉我哪里出错了?
<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>
答案 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将是剩余的秒数。