Javascript SetInterval messagebox更新通过重载导致页面崩溃
您好,我有一个消息框,用户可以放置消息,我使用ajax更新消息,并使用setinterval每隔20秒自动更新消息。。但是,我使用的代码使用间隔调用重载页面。从下面的代码中,任何人都可以看到我哪里出错了,以及我将如何处理这一问题,从而使间隔处于单个循环中。谢谢Javascript SetInterval messagebox更新通过重载导致页面崩溃,javascript,ajax,setinterval,Javascript,Ajax,Setinterval,您好,我有一个消息框,用户可以放置消息,我使用ajax更新消息,并使用setinterval每隔20秒自动更新消息。。但是,我使用的代码使用间隔调用重载页面。从下面的代码中,任何人都可以看到我哪里出错了,以及我将如何处理这一问题,从而使间隔处于单个循环中。谢谢 $(function(){ $(document).keypress(function() { clearInterval(running); }) var running = setInt
$(function(){
$(document).keypress(function() {
clearInterval(running);
})
var running = setInterval(function (){
var varLISTID = document.getElementById('datacatch').getAttribute("data-variable-LISTID");
var varUSERACCOUNTNAME = document.getElementById('datacatch').getAttribute("data-variable-USERACCOUNTNAME");
var mylink = "loadmessages.php?listID=" + varLISTID + "&useraccountname="+ varUSERACCOUNTNAME;
$('#infobox1').load(mylink);
},20000); //10s
});
SetTimeout而不是setInterval解决了问题
谢谢。改用
$(document).keydown(function(){…})
.keypress
可能有问题,正如官方文档所述。此代码令人困惑,为什么clearInterval
知道正在运行
?可能的修复方法是将keypress
事件放在调用setInterval
之后。因为它在循环$(文档)中,运行程序在keypress上是已知的,因为var是由kepress设置的,但我应该将它放在正确的下面。setTimout解决了这个问题。thanks@HagaiWild当您以创建$(document).keypress(…)
的方式创建函数时,它将在调用函数时“查找”正在运行的变量,而不是在创建函数时。
$(function(){
var running = setTimeout(function (){
alert('up');
var varLISTID = document.getElementById('datacatch').getAttribute("data-variable-LISTID");
var varUSERACCOUNTNAME = document.getElementById('datacatch').getAttribute("data-variable-USERACCOUNTNAME");
var mylink = "loadmessages.php?listID=" + varLISTID + "&useraccountname="+ varUSERACCOUNTNAME;
$('#infobox1').load(mylink);
},20000);//10s
$(document).keypress(function() {
clearInterval(running);
})
});