Javascript 为什么我的第二条if语句在第一条if语句为true之后连续运行两次?
大家好,我的checkRight()函数有问题。 我试着用js建立一个测验网页。 这是我的完整代码: 我的问题由一个具有以下属性的类组成:问题(字符串)、答案(字符串数组)和答案(字符串)属性。 如果我点击正确答案,我的计数器就会变得非常混乱Javascript 为什么我的第二条if语句在第一条if语句为true之后连续运行两次?,javascript,jquery,if-statement,onclick,click,Javascript,Jquery,If Statement,Onclick,Click,大家好,我的checkRight()函数有问题。 我试着用js建立一个测验网页。 这是我的完整代码: 我的问题由一个具有以下属性的类组成:问题(字符串)、答案(字符串数组)和答案(字符串)属性。 如果我点击正确答案,我的计数器就会变得非常混乱 function checkRight (){ $(".answer").click(function() { check = $(this).html(); if(check===qAry[i].rightAnswer){
function checkRight (){
$(".answer").click(function() {
check = $(this).html();
if(check===qAry[i].rightAnswer){
rightCounter++;
$(".richtigZaehler").text(rightCounter);
i++;
askQ();
}
else if(check!=qAry[i].rightAnswer){
console.log("Update");
wrongCounter++;
$(".falschZaehler").text(wrongCounter);
}
});
}
在外部添加单击处理程序如何?否则,您将需要注销它们
var rightCounter=0; //counter for rightAnswer
var wrongCounter=0; //counter for wronganswer
$(".answer").on("click", function() {
checkRight(this);
})
然后在checkRight函数中:
function checkRight (evt){
check = $(evt).html();
if(check===qAry[i].rightAnswer){
debugger;
rightCounter++;
$(".richtigZaehler").text(rightCounter);
i++;
askQ();
}
else if(check!=qAry[i].rightAnswer){
console.log("Update");
wrongCounter++;
$(".falschZaehler").text(wrongCounter);
}
}
您的代码应该发布在这里,至少足以显示您遇到的问题的上下文。无论如何,问题是,
.click()
每次调用时都会添加一个新的事件处理程序,而不会删除任何已经存在的处理程序。因此,每次调用checkRight()
时,都会添加另一个冗余的“click”处理程序,并且在发生“click”时会调用每个处理程序。非常感谢。我得到了它。