javascript – 清除setTimeout的数组

前端之家收集整理的这篇文章主要介绍了javascript – 清除setTimeout的数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以我在我的 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()来检查数组是否存在,然后循环并清除每个单独的超时.

但是这不起作用.希望有人可以指出我正确的方向.非常感谢.

解决方法

如果使用数组,则使用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);
}

function clearTuttimer(){
    for (var k in tuttimer) {
        clearTimeout(tuttimer[k]);
    }
}

猜你在找的JavaScript相关文章