我有一个简单的问题,有一个带有参数 emp_id 的函数可以打开一个具有不同属性的聊天表单,我希望它每 10 秒自动刷新一次,现在它有点不对劲,因为有一个参数 emp_id 是可以更改的,一旦我更改它,与消息和表单的聊天将刷新两倍或三次 :) 取决于您更改 emp_id 的次数,我希望我很清楚))无论如何这里是JavaScript 函数:
function load_chat(emp_id) {
var url = "#request.self#?fuseaction=objects2.popup_list_chatform"
url = url + "&employee_id=" + emp_id;
document.getElementById('form_div').style.display = 'block'; AjaxPageLoad(url,'form_div',1,'Yükleniyor');
setInterval( function() {
load_chat(emp_id);
},10000);
}
有一个名字列表,一旦我点击其中一个,这个表单就会被这个函数打开,但如果我点击另一个用户,我的意思是如果我改变 emp_id,它会刷新,以前的和现在的表单。我如何更改它以便它只刷新最后一个 emp_id,而不是我更改的所有 id
谢谢大家的帮助,我真的很感激!
最佳答案
这会很好地封装您正在做的事情。计时器 ID (tid
) 保存在闭包内,因此当您调用 load_chat
时,如果有一个正在运行,它将停止间隔。
一旦设置了新的 url,它将再次启动间隔计时器。
var ChatModule = (function() {
var tid,
url;
function refresh()
{
AjaxPageLoad(url, 'form_div', 1, 'Yükleniyor');
}
return {
load_chat: function(emp_id) {
if (tid) {
clearInterval(tid);
}
// setup url
url = "#request.self#?fuseaction=objects2.popup_list_chatform"
url = url + "&employee_id=" + emp_id;
document.getElementById('form_div').style.display = 'block';
// load ajax
refresh();
// set timer
tid = setInterval(refresh, 10000);
}
}
}());
ChatModule.load_chat(123);
关于javascript - 函数根据 setinterval 循环但具有不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11033530/