Javascript 带超时的鼠标悬停事件

Javascript 带超时的鼠标悬停事件,javascript,prototype,Javascript,Prototype,我有一些鼠标悬停事件的链接。onmouseover将显示一个图层。 它工作正常,但有点烦人,因为如果鼠标不经意地越过链接,该层将显示出来 现在我想要的是,如果用户在链接上有鼠标,并在链接上停留200毫秒,那么它应该显示图层 我怎样才能做得更好。因为我需要注册和设置超时功能,如果鼠标在200毫秒前离开,我必须清除超时 谢谢你的帮助。 <!doctype html> <html> <head> <script>

我有一些鼠标悬停事件的链接。onmouseover将显示一个图层。 它工作正常,但有点烦人,因为如果鼠标不经意地越过链接,该层将显示出来

现在我想要的是,如果用户在链接上有鼠标,并在链接上停留200毫秒,那么它应该显示图层

我怎样才能做得更好。因为我需要注册和设置超时功能,如果鼠标在200毫秒前离开,我必须清除超时

谢谢你的帮助。

<!doctype html>

<html>
    <head>
        <script>
            window.onload = function () {
                var interval = null, link = null;

                // Window = Container
                window.onmousemove = function (event) {
                    var target = event.target;

                    if (target.nodeName === "A") {
                        link = target;

                        if (interval === null) {
                            interval = setInterval (function () {
                                clearInterval (interval);

                                interval = null;

                                open ("", ""); // Display layer
                            }, 1000); // I think 1 sec is better
                        }
                    }

                    if (interval !== null && link !== target) {
                        clearInterval (interval);

                        interval = null;
                    }
                }
            }
        </script>

        <title></title>
    </head>

    <body>
        <a href = "#">Click me</a>
        <a href = "#">Click me</a>
    </body>
</html>

window.onload=函数(){
变量间隔=null,链接=null;
//窗口=容器
window.onmousemove=函数(事件){
var target=event.target;
如果(target.nodeName==“A”){
链接=目标;
如果(间隔===null){
间隔=设置间隔(函数(){
间隔时间;
间隔=空;
打开(“,”);//显示层
},1000);//我认为1秒更好
}
}
if(间隔!==null&&link!==target){
间隔时间;
间隔=空;
}
}
}

我已经在几家不同的公司编写了JS代码来实现这一点。如果您还想取消鼠标上的图层,而不管您的触发启示是什么,那么它就会变得复杂,而且取消也会被延迟


你说得对,你需要计时器,它的timerID已经存储好了,这样你就可以清除它们了。我不打算为您编写代码,但如果您有一个实现,我可以对您的实现进行评论。

您的意思是您想要一种比创建计时器并在
mouseout
上清除计时器更好的方法,还是您不知道如何执行此操作?我需要一种干净的方法来执行此操作。谢谢