ClearInterval 没有停止

发布于 2024-12-07 19:02:03 字数 600 浏览 0 评论 0原文

我正在尝试使用 setInterval 来检查当有人单击提交按钮时哈希值的变化。当点击提交按钮时,页面根本不会改变。仅改变哈希值。我想使用 setInterval 重复查找哈希值,直到它到达第 2 页(以防输入的表单值不正确)。一旦检测到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);
}

I'm trying to use setInterval to check for hash value change when a person clicks on a submit button. When the submit button is hit, the page will not change at all. Only the hash value is changed. I want to use the setInterval to repeatedly look for the hash value until it goes to page2 (in case the form values entered are incorrect). Once page2 is detected, it will clear the setInterval, but this part is not working.

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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌上青苔 2024-12-14 19:02:03

一些改进:

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

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

我还建议在函数 checkHash 内的 hv = window.location.hash 之前添加 var,这样变量就不会泄漏到全球范围。

Some improvements:

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

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

I also recommend to add var before hv = window.location.hash inside function checkHash, so that the variable doesn't leak to the global scope.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文