鼠标悬停,延后触发事件

最近在制作一个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);也是这样的情况。
所以,我的解决方法就是,将要执行的操作,不写在新的函数里面,而是写成上述的正确示例的形式,大家也可以这么去写。

具体原因还没有去挖掘,热心的博友有什么想说的请不要吝啬,到时候我会补充到这篇文章里。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值