1

setInterval を使用して、人が送信ボタンをクリックしたときにハッシュ値の変更を確認しようとしています。送信ボタンを押しても、ページはまったく変化しません。ハッシュ値のみが変更されます。setInterval を使用して、page2 に移動するまでハッシュ値を繰り返し検索したいと考えています (入力されたフォーム値が正しくない場合)。page2 が検出されると、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);
}
4

1 に答える 1

2

改善点:

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

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

変数がグローバル スコープに漏れないように、functionのvar前に追加することもお勧めします。hv = window.location.hashcheckHash

于 2011-10-04T18:58:05.000 に答える