第一次发帖见谅..我想做一个效果鼠标在div上停留两秒后执行一些函数,不超过两秒不执行;然后网上找了setTimeout这个函数成功解决了,因为一直是自学的所以基础薄弱,有些不懂的地方求解一共三个问题在代码中注释了,万分感谢!代码:<script src="jquery.min.js"></script><script> var timer = null; // 1.此处为什么要在这里声明timmer=null? $(function(){ $("#test").hover( function(){ $(this).html("悬停"); timer=setTimeout(function(){alert("hello")},2000); // 2.为什么不能直接去掉第 //一行的声明 ,在此处var timer=setTimeout(...)... }, function(){ if(timer) // 3.这里的if语句有什么作用?我试着去掉后函数也能完整运行呀 clearTimeout(timer); $(this).html("测试"); }); }); </script></head><body> <div id="test"> 测试 </div></body>
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
setTimeout
会返回一个整数id,是计时器编号,提前声明一个变量自然是存储编号用了;为什么不能在这里声明?要知道
var
是函数作用域的,在function
里边声明的变量一出去就没了,你叫另一个匿名函数的clearTimeout
到哪去找这个变量?这里的
if
主要是严谨,在setTimeout
成功返回计时器编号(因为初始是null,如果没返回肯定就false了)的情况下,才会执行clearTimeout(timer)
这句,避免前边执行错误时继续执行错误代码。
添加回答
举报
0/150
提交
取消