javascript - 清除 setTimeout 的数组

标签 javascript jquery tooltip

好的,所以我在我的 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/

相关文章:

javascript - 单击按钮 div 显示 1 x 1(一次一个)

jquery - 使用 touchstart 关闭 iphone/ipad 上的 jQuery Tools 工具提示

c# - 工具提示文本作为 ASP.Net 下拉列表中的选定值

javascript - 将新数据推送到 firebase 数据库时设置自定义数字键

javascript - 如何使用 firestore orderBy 但同时添加未定义的值

javascript - 响应式菜单未显示 Uncaught TypeError : jQuery(. ..).on 不是 WordPress 网站中的功能

javascript - 带 Pageslide 的 NiceScrollbar

.net - 在 VB.net 中实现这样的工具提示?

javascript - 如何在jsp中动态显示 '✔'

javascript - 使用 jquery 和 css 在点击时展开 div