最近在制作一个3D模型展示的工作,用到了鼠标悬停,延后几秒钟后,展示一些东西,在做的时候发现了些问题,特地来这里进行一下记录。
正常的实例:
例1:
起初我是这样写的:
错误示例:
在网上也找了许多文章,也没有什么结果,自己就尝试着按下面的情况去写
正确示例:
对于 setInterval(function,time);也是这样的情况。
所以,我的解决方法就是,将要执行的操作,不写在新的函数里面,而是写成上述的正确示例的形式,大家也可以这么去写。
具体原因还没有去挖掘,热心的博友有什么想说的请不要吝啬,到时候我会补充到这篇文章里。
正常的实例:
例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);也是这样的情况。
所以,我的解决方法就是,将要执行的操作,不写在新的函数里面,而是写成上述的正确示例的形式,大家也可以这么去写。
具体原因还没有去挖掘,热心的博友有什么想说的请不要吝啬,到时候我会补充到这篇文章里。