ClearInterval не останавливается - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь использовать setInterval для проверки изменения значения хеша, когда человек нажимает кнопку отправки.Когда нажата кнопка «Отправить», страница не изменится.Изменяется только значение хеша.Я хочу использовать setInterval для многократного поиска значения хеша, пока оно не перейдет на страницу 2 (если введенные значения формы неверны).Когда страница 2 обнаружена, она очищает setInterval, но эта часть не работает.

var chkHash;
var hashval = window.location.hash;

var sb = document.getElementById("submitButton").onclick = function() {
    startHash();
}

function checkHash() {
   hv = window.location.hash;
   if (hashval !== hv ) { hashval = hv; }

   if(/page2/i.test(hv)) {
      clearHash();
   }
}

function startHash() {
   chkHash = setInterval('checkHash()', 5000);
}

function clearHash() {
   clearInterval(chkHash);
}

1 Ответ

2 голосов
/ 04 октября 2011

Некоторые улучшения:

//Inside startHash, change:
chkHash = setInterval('checkHash()', 5000);

//to
clearInterval(chkHash); //Don't create multiple timers
chkHash = setInterval(checkHash, 5000);

Я также рекомендую добавить var перед hv = window.location.hash внутри функции checkHash, чтобы переменная не попала в глобальную область видимости.

...