Я попытался упростить проблему с кодом ниже. Часть кода опирается на jQuery, к вашему сведению.
По сути, я ожидаю, что при нажатии кнопки «Новая вещь» появится одно предупреждение. Тем не менее, если запустить таймер, нажатие кнопки «Новая вещь» приводит к неожиданному поведению, при котором количество появляющихся предупреждающих сообщений равно истекшему времени.
Эта проблема уничтожает меня.
Чтобы быть точным, я включил полный пример. Я понимаю, что это немного долго.
$(document).ready(function() {
mainLoop();
});
var counter = 0;
var timerIsOn = 0;
var t;
function mainLoop() {
handleInput();
timer();
}
function timerHandle() {
if (!timerIsOn){
timerIsOn = 1;
timer();
}
}
function timer(){
if (timerIsOn) {
t = setTimeout(mainLoop, 1000);
counter++;
$("span").text(counter); // To display the elapsed time
}
}
// Just simple buttons
function handleInput(){
$("#timer").click(timerHandle);
$("#new").click(createThing);
}
function Thing() {
this.talk();
}
Thing.prototype.talk = function() {
alert("Hello!");
}
function createThing() {
new Thing;
}
Я очень ценю помощь!