我在 onclick 函数中重复循环 if/else 语句时遇到问题。在这款游戏中,你必须判断一个单词是否有效,然后继续判断,直到答错一个单词为止。
但是发生的情况是代码通过 if/else 分支的次数与您所做的问题相同。所以第一个问题一次,第二个问题两次,依此类推。因此,在第五个问题上,您将看到 5 个警报框,并且您的分数将增加 5,而不是 1。
总共有相当长的代码,否则它可以工作(我还没有完成高分位)。我把其中的一小部分放在我认为问题所在的地方。
完整内容请参见 http://www.absp.org.uk/test/study3lw.shtml
function quiz(){
...
$('#true').on('click', function(){
...
if (valid === true){ // ie got it right
score++;
alert(score);
...
} else { // got it wrong
...
score = 0;
$('#word').append("*");
alert("Game Over!");
}
});
$('#false').on('click', function(){
...
if (valid === false){ // ie got it right
score++;
alert(score);
...
} else { // got it wrong
score = 0;
alert("Game Over!");
...
}
});
}
$('#start').on('click', function (){ // calls the above for each question
...
quiz();
});
最佳答案
看起来您正在为每个问题创建一个新的单击事件,因此到第五个问题时,您的按钮就有了五个事件监听器。我相信 jQuery 有 .one() ,它会在事件触发后取消注册该事件。尝试使用 .one() 而不是 .on()
关于javascript - 在函数中重复循环 if/else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44955710/