好的,所以我在我的AJAX应用程序中有一个功能,它在一定时间后将工具提示放在角落里,以帮助提示用户以及他们正在做什么。还有第二个功能可以在用户点击其他地方时清除超时,因为工具提示不再相关。
我现在开始遇到一个问题,即在超时时设置多个工具提示,设置它们很好但是如果用户继续,我找不到有效的方法来取消它们。
目前我的代码看起来像这样
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()
来检查数组是否存在,然后循环并清除每个单独的超时。
然而这不起作用。希望有人可以指出我正确的方向。非常感谢。
答案 0 :(得分:13)
如果使用数组,则使用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]);
}
}
答案 1 :(得分:0)
像往常一样只是输入问题让我看到了我的方式错误。
问题来自于我将array关键字设置为某个预定义的值,然后当我循环时我正在寻找数字键。为了克服这一点,我修改了
function showtooltip(uniqueid, delay){
tuttimer[uniqueid] = setTimeout(function(){
//Create tooltip code here
},delay);
}
是
function showtooltip(uniqueid, delay){
tuttimer.push(setTimeout(function(){
//Create tooltip code here
},delay));
}