Я пытаюсь сделать счетчики правильных и неправильных ответов. Счет происходит в структуре if else после того, как пользователь нажимает кнопку.jquery set counter внутри функции, которая называется сама по себе
(function keerSom(){
//generate and put a random number between 1 and 10
a = Math.floor((Math.random() * 10) + 1);
$(".a").html(a);
//get the variable b
b = $(".b").text().trim();
//get the cursor inside the input field and set the input field clean
userInputBox.focus();
$("#userAnswer").val("");
//make the calculations and check
next.click(function() {
$("form").submit(function(event) {
event.preventDefault();
});
result = a*b;
userInput = $("#userAnswer").val();
//check if the answer was correct
if (result == userInput){
userInputBox.removeClass("incorrect");
userInputBox.addClass("correct");
//set count of correct
correct++;
$("#correct").html(correct);
Если ответ правильный, я должен перейти к следующей задаче для пользователя (это означает, что обратно в начале функции)
//go for anothe som
setTimeout(function(){
userInputBox.removeClass("correct");
keerSom();
}, 3000);
}else{
userInputBox.addClass("incorrect");
//set counter of incorrect
incorrect++;
$("#incorrect").html(incorrect);
userInputBox.focus();
}
});
})();
Вы можете увидеть, что я пытаюсь сделать здесь http://jsfiddle.net/pmjmny49/9/
Проблема заключается в том, что счетчик работает неправильно. Он подсчитывается в прогрессии, он добавляет не 1, а 2, затем 4 и так далее.
Я не могу понять, что я делаю неправильно. Конечно, из-за вызова функции внутри себя ... но я не вижу, что я могу сделать, чтобы она работала.
Если кто-то может помочь, объясните, что происходит, я был бы очень признателен!
Заранее благодарен!
Большое спасибо, действительно, разделение события щелчка заставило его работать правильно. :-) Но я все еще хочу лучше понять исходную проблему. Это связано с привязкой более одного события с кнопкой ... Я разместил «ответ» ниже. –
Не могли бы вы дать подсказку, где дело, как у меня, хорошо объяснено?Вы бы назвали это рекурсией? –
Проверьте это. Это по существу то, что вы делали раньше: http://jsfiddle.net/xakdgdzk/1/ – wrxsti