好的,所以我在我的 AJAX 应用程序中有一个功能,它会在一定时间后将工具提示贴在 Angular 落,以帮助提示用户以及他们正在做的事情。还有第二个功能,如果用户单击其他地方,则清除超时,因为该工具提示将不再相关。
我现在开始遇到关于超时设置多个工具提示的问题,设置它们很好,但如果用户继续,我找不到取消它们的有效方法。
目前我的代码是这样的
var tuttimer = new Array();
function showtooltip(uniqueid, delay){
tuttimer[uniqueid] = setTimeout(function(){
//Create tooltip code here
},delay);
}
function clearTuttimer(){
if(typeof tuttimer != 'undefined'){
for (var i = 0; i < tuttimer.length; i++) {
clearTimeout(tuttimer[i]);
}
}
}
因此 tuttimer
数组是在页面加载时创建的,然后每当用户执行某些操作时会显示工具提示以显示 showtooltip()
函数被调用并给出一个唯一的 ID 和一个延迟时间。
但是如果用户要继续做其他事情,它会调用函数 clearTuttimer()
检查数组是否存在,然后循环并清除每个超时。
但是这不起作用。希望有人能指出我正确的方向。非常感谢。
最佳答案
如果你使用数组,那么使用Array.push
方法。
var tuttimer = [];
function showtooltip(delay){
tuttimer.push(setTimeout(function(){
//Create tooltip code here
},delay));
}
function clearTuttimer(){
for (var i = 0; i < tuttimer.length; i++) {
clearTimeout(tuttimer[i]);
}
}
如果要使用uniqueid
,则使用对象而不是数组。
var tuttimer = {};
function showtooltip(uniqueid, delay){
tuttimer[uniqueid] = setTimeout(function(){
//Create tooltip code here
},delay);
}
function clearTuttimer(){
for (var k in tuttimer) {
clearTimeout(tuttimer[k]);
}
}
关于javascript - 清除 setTimeout 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13033149/