javascript - 使用 clearTimeout 取消超时事件

标签 javascript prototypejs dom-events

我有以下代码,但清除超时不起作用,我不明白为什么,有人有什么想法吗? (使用原型(prototype)框架)

function foo() {
    $("navigation").observe('mouseover',
        function (event) {
            clearTimeout(bar);
        }
    ).observe('mouseout',
        function (event) {
            setTimeout(bar, 1000);
        }
    );
}

function bar() {
    alert("hi");
}

最佳答案

您需要将 setTimeout 的结果存储在一个变量中,并使用 clearTimeout 清除该变量,而不是函数:

var timer;

function foo() {
    $("navigation").observe('mouseover',
        function (event) {
                clearTimeout(timer);
        }
    ).observe('mouseout',
        function (event) {
                timer = setTimeout(bar, 1000);
        }
    );
}

function bar() {
    alert("hi");
}

关于javascript - 使用 clearTimeout 取消超时事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1893533/

相关文章:

javascript - onclick 处理程序不会触发使用 document.createElement 创建的复选框

javascript - 每个 session 模态显示一次

javascript - Eclipse 中的 JSDoc 自动完成文档不适用于 Class.create()

javascript - 使用原型(prototype)查找元素的特定直接子元素

Javascript 原型(prototype)函数和 SVG setAttribute(onclick)

jquery - 将 jQuery 事件绑定(bind)到元素的最佳方法是什么

javascript - 使用 JQuery 选择下拉值时类不会更改

javascript - 原型(prototype) : Change attribute

javascript - 添加同类事件是否会追加或覆盖之前添加的同名事件?

javascript - 如何识别双击 SELECT 元素中的多个