我试图使用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);
}
最佳答案
一些改进:
//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
,以免变量泄漏到全局范围。关于javascript - ClearInterval没有停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7652663/