JavaScript-innerHTML在setInterval中不独立运行
JavaScript - innerHTML does not run independently in setInterval
这是我的第一个JS问题。我有一个在setInterval中的函数。所以这个函数会被重复。
function chooseAnswer() {
correct.onclick = function() {
if (range == 0) {
score++;
isGameOver = false;
}
else {
isGameOver = true;
}
}
incorrect.onclick = function() {
if (range != 0) {
score++;
isGameOver = false;
}
else {
isGameOver = true;
}
}
// Display score
displayScore.innerHTML = score;
}
一切都很完美,除了分数(innerHTML)在触发onlick后不会立即更新。它等待下一轮时间间隔进行更新。但是,如果我移动
displayScore.innerHTML = score;
并将其放在之后
score++;
在任一if语句中,在触发onlick后,分数将立即更新。为什么会发生这种情况?这个函数不是独立工作而不管setInterval吗?也就是说,它逐行执行,所以
displayScore.innerHTML = score;
将立即更新,不必等到下一轮。
这更多的是一个注释,但因为它太长了,我将在这里写它:
这与循环中的continue
无关。当调用chooseAnswer
时,无论是手动调用还是由setInterval
调用。然后执行三个语句:
- 回调到
correct.onclick
的分配 - 回调到
incorrect.onclick
的分配 displayScore.innerHTML = score;
回调本身当时只是存储在onclick
中,但此时并没有执行/评估它们。只有当您单击correct
或incorrect
时,浏览器才会检查回调是否存储在onclick
中,如果有回调,则会执行回调。但这个回调只包含以下代码:
function() {
if (range == 0) {
score++;
isGameOver = false;
} else {
isGameOver = true;
}
}
以下代码与您的代码等效,但具有另一种结构,可能更容易理解:
function correctCallback() {
if (range == 0) {
score++;
isGameOver = false;
} else {
isGameOver = true;
}
}
function incorrectCallback() {
if (range != 0) {
score++;
isGameOver = false;
} else {
isGameOver = true;
}
}
function chooseAnswer() {
correct.onclick = correctCallback; //correctCallback is not call but just assigned to correct.onclick
incorrect.onclick = incorrectCallback; //incorrectCallback is not call but just assigned to correct.onclick
// Display score
displayScore.innerHTML = score;
}
此外,在该间隔中一次又一次地重写CCD_ 11是没有意义的。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- JavaScript-innerHTML在setInterval中不独立运行
- 同时运行两个独立的jQuery
- 在独立JavaScript程序上运行API
- 在独立脚本上运行的函数在另一个脚本Javascript node.js上不起作用
- 具有独立于控制器运行的Angular$间隔
- 如何独立运行两个javascript函数
- 使代码独立于页面的其余部分运行
- 在项目后期将Vue.js从独立构建更改为仅运行时构建
- jQuery -运行perl脚本(全部独立)
- 与独立的Mocha相比,用Karma运行测试的优势是什么?
- perl-cgi脚本可以't发布到站点-独立工作,但在apache下运行时失败
- 运行彼此独立的相同 JavaScript
- Jquery /javascript通过循环设置多个超时,一个接一个地独立运行
- 通过独立浏览器客户端运行的实习生错过了这一点.远程套房
- 创建一个独立于单击事件的jquery函数,并在加载页面时运行