Как заставить таймер JavaScript останавливаться после нажатия на ссылку?или хотя бы перезапустить? - PullRequest
0 голосов
/ 25 февраля 2011

Я хочу знать, как отключить таймер JavaScript, если вы нажмете на ссылку, а не обязательно на ту, которая ее начала вот часть моего кода с таймером в нем:

function doMiningcoal() {
  if (!timer_is_on) {
    timer_is_on = true;
    t = setInterval(function () {
        timedCount2();
    }, 100);                
}
} 

function timedCount2() {
document.getElementById('txt').value = d;
d = d - 1;
if (d <= -1) {
coalCount++;
xp = 15 + xp
var _message = "You have mined " + coalCount + " coal" + (((coalCount > 1) ? "s" : "") + "!") + " You have " + xp + " xp";
document.getElementById('message').innerHTML = _message;
var _coal = coalCount + " Coal"
document.getElementById('coal').innerHTML = _coal
startover2();
}
}


function startover2() {
 d = 20;
clearTimeout(t);
timer_is_on=0;
doMiningcoal();
}

1 Ответ

0 голосов
/ 25 февраля 2011

переменная t инициализирована вне вашей функции?Если нет, то следующие функции не могут использовать его, поскольку он является локальным только для первой функции, а t в вашей функции startover2 не совпадает (другая локальная)

-edit-

Да, и вам нужно будет использовать clearInterval, так как вы использовали setInterval.

-edit2- -edit3, удалена 1 строка-

var t = 0;
var timer_is_on = 0;
function doMiningcoal() {    
  if (!timer_is_on) {
    timer_is_on = true;
    t = setInterval(function () {
        timedCount2();
    }, 100);                
}
} 

function timedCount2() {
    document.getElementById('txt').value = d;
    d = d - 1;
    if (d <= -1) {
        coalCount++;
        xp = 15 + xp
        var _message = "You have mined " + coalCount + " coal" + (((coalCount > 1) ? "s" : "") + "!") + " You have " + xp + " xp";
            document.getElementById('message').innerHTML = _message;
        var _coal = coalCount + " Coal"
        document.getElementById('coal').innerHTML = _coal
        startover2();
    }
}


function startover2() {
    d = 20;
    clearInterval(t);
    timer_is_on=0;
}
...