【发布时间】:2020-06-07 00:35:26
【问题描述】:
我刚开始学习 Javascript,我正在尝试各种功能。 这是我用来尝试函数 setInterval() 的 HTML 页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Wait!</title>
<script>
document.addEventListener('DOMContentLoader', () =>{
setInterval(count, 1000);
});
let counter = 0;
function count(){
counter++;
document.querySelector('#counter').innerHTML=String(counter);
}
</script>
</head>
<body>
<h1><span id="counter">0</span> seconds have passed...</h1>
<h3>Cherish your time...</h3>
</body>
</html>
它应该能够显示一个带有 h1 表示秒已过去的 HTML 页面,每 1000 毫秒增加 1,即 1 秒。
setInterval 函数应该每 1 秒运行一次 count() 函数,这会改变
变量counter 并在#counter 上显示当前值。
然而,当我运行这个程序时,似乎什么也没有发生。只有一个网页说0秒。
当我转到控制台(谷歌浏览器)时,没有发生错误,当我通过输入 counter 查询 counter 值时,它保持在 0。
另外,当我输入counter = 4 时,网页上的文字不会改变。因此,我认为
问题出在document.addEventListener(),虽然我不知道它是什么。
如果您能回答这个问题,我将非常感激。
【问题讨论】:
-
请注意,与大多数语言一样,
setIntervals形式的延迟不会完全在设定的时间(本例中为 1000 毫秒)之后执行,但不是 直到这个时候已经过去了。特别是对于 javascript,它不能运行多个线程并且需要等到“队列”中的其他内容完成后,请记住这一点。可能超出了您现在需要学习的内容,但我总是使用带有计时器的requestAnimationFrame。 -
谢谢!
标签: javascript setinterval addeventlistener