当我调用我的函数时,它会启动一个间隔来刷新聊天屏幕。但是,当我选择不同的用户(不同的参数)时,前一个间隔继续,我不知道在新的间隔开始时如何停止前一个间隔。我试过从函数外部调用clearInterval(),但我认为我的语法必须是错误的,因为它将间隔显示为未定义。
这是我的代码。
function selectrecipient(x,y){
clearInterval(refint);
var refint = setInterval(function(){
$.ajax({
type: "POST",
url: '../includes/chat/msgs.php',
data: ({ chosenuser : x }),
success: function(data){
document.getElementById('messagehistory').innerHTML = data;
}
});
document.getElementById("recipientid").value = ""+x+"";
}, 1000);
}
答案 0 :(得分:0)
您需要在外部作用域中声明变量refint
,否则每次调用该方法时都会重置该变量的值。在您的情况下,因为您在每次调用selectrecipient
时都将其声明为局部变量,所以将使用新变量,而clearInterval
时,它将具有值undefined
var refint;
function selectrecipient(x, y) {
clearInterval(refint);
refint = setInterval(function () {
$.ajax({
type: "POST",
url: '../includes/chat/msgs.php',
data: ({
chosenuser: x
}),
success: function (data) {
document.getElementById('messagehistory').innerHTML = data;
}
});
document.getElementById("recipientid").value = "" + x + "";
}, 1000);
}