我在onclick函数中通过if / else语句重复循环时遇到问题。这是一个游戏,你必须说一个单词是否有效,你继续前进,直到你弄错了。
发生的事情是代码经过if / else的分支与你所做的问题的次数相同。所以第一个问题一次,第二个问题两次,等等。因此,在第五个问题上,您将获得5个警报框,并且您的分数将增加5而不是1。
总共有相当长的代码,否则就会起作用(我还没有完成hi-score位)。我把它缩短了一点,我认为问题必定在下面。
完整的事情在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();
});
答案 0 :(得分:0)
看起来您正在为每个问题创建一个新的点击事件,因此在第五个问题中,您的按钮有五个事件侦听器。我相信jQuery有.one()会在事件被解雇后取消注册。尝试使用.one()而不是.on()