第一次发帖见谅..
我想做一个效果鼠标在p上停留两秒后执行一些函数,不超过两秒不执行;
然后网上找了setTimeout这个函数成功解决了,因为一直是自学的所以基础薄弱,有些不懂的地方求解
一共三个问题在代码中注释了,万分感谢!
代码:
测试
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
setTimeout会返回一个整数id,是计时器编号,提前声明一个变量自然是存储编号用了;为什么不能在这里声明?要知道
var是函数作用域的,在function里边声明的变量一出去就没了,你叫另一个匿名函数的clearTimeout到哪去找这个变量?这里的
if主要是严谨,在setTimeout成功返回计时器编号(因为初始是null,如果没返回肯定就false了)的情况下,才会执行clearTimeout(timer)这句,避免前边执行错误时继续执行错误代码。首先,setTimeout定时器在使用后会进行clear清除,为了能知道该清楚哪个定时器,因此要加上一个变量,也就是定时器变化。
其次,函数作用域。function外部无法直接访问内部变量,因此要在function外部定义一个变量供给不同function使用。
最后if(timer)主要就是避免timer已经关闭的情况下再去触发clear报错的情况了。
多谢楼上两位!