您的位置:首页 > Web前端 > JavaScript

鼠标悬停,延后触发事件

2014-07-23 15:31 330 查看
最近在制作一个3D模型展示的工作,用到了鼠标悬停,延后几秒钟后,展示一些东西,在做的时候发现了些问题,特地来这里进行一下记录。

正常的实例:

例1:
setTimeout("alert(1)",2000);//2秒后弹出“1”

例2:

function initShowCloth(){
alert(1);
}
setTimeout(initShowCloth(),2000); //2秒后弹出“1”
以上情况都是正常实现的。

起初我是这样写的:

错误示例:
var showClothTimer ;
function initShowCloth(){
alert(1);
}

button.addEventListener( 'mouseover', function(event) {
showClothTimer = setTimeout(initShowCloth(),2000);
}, false );

button.addEventListener( 'mouseout', function(event) {
clearTimeout(showClothTimer);
}, false );
上面的方法,大家要试过了就会发现,它并没有在2秒后弹出“1”,而是在你鼠标移动到按钮上时就会弹出。

在网上也找了许多文章,也没有什么结果,自己就尝试着按下面的情况去写

正确示例:
var showClothTimer;
showClothTimer = setTimeout(function(){
alert(1);
},2000);
}, false );

button.addEventListener( 'mouseout', function(event) {
clearTimeout(showClothTimer);
}, false );
发现结果是自己想要的,2秒后弹出“1”。

对于  setInterval(function,time);也是这样的情况。

所以,我的解决方法就是,将要执行的操作,不写在新的函数里面,而是写成上述的正确示例的形式,大家也可以这么去写。

具体原因还没有去挖掘,热心的博友有什么想说的请不要吝啬,到时候我会补充到这篇文章里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript