我正在制作秒表,这是我的代码。这对我来说非常有意义,但由于某种原因不想更新。
HTML:
<ul>
<li id="hour">0</li>
<li>:</li>
<li id="min">0</li>
<li>:</li>
<li id="sec">0</li>
</ul>
JS:
var sec = document.getElementById("sec").value,
min = document.getElementById("min").value,
hour = document.getElementById("hour").value;
function stopWatch(){
sec++;
if(sec > 59) {
sec = 0;
min++;
} else if(min > 59){
min = 0;
hour++;
}
window.setTimeout("stopWatch()", 1000);
}
stopWatch();
最佳答案
列表项没有 .value
属性。输入或文本区域有。应该是
var sec = parseInt(document.getElementById("sec").innerHTML, 10),
min = parseInt(document.getElementById("min").innerHTML, 10),
hour = parseInt(document.getElementById("hour").innerHTML, 10);
它还将它们解析为数字。
另外,不要将字符串传递给 setTimeout
。传递你想要调用的函数:
window.setTimeout(stopWatch, 1000);
并且在代码中没有任何地方输出更新的变量。它们不是指向 DOM 属性的神奇指针,而只是保存数字(或原始脚本中的字符串)。
最后但并非最不重要的一点是您的代码中存在逻辑错误。仅当秒数未超过 59 时,才检查分钟数是否超过 59。删除 if
之前的 else
。
关于javascript - Javascript 秒表遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684539/