写在前面的话:之前一直以为定时器的返回值是Object类型,所以timer初始化也是写null,今天发现返回值是number,进而发觉这个返回值代表的是定时器的索引,指代这是第几个定时器
个人觉得只用set/clearInterval方法就好,他可以实现另外的一个方法的所有功能
启用定时器的方法有两种:
一、setInterval(,)
- 周期性的执行函数体,这个方法如果不主动停止的话,会一直执行
- 第一个参数是执行的函数体,一般传入有函数名的函数方法或匿名方法,非常不建议直接传入函数执行体,代码可读性会很差,应该也没人会这样做吧
- 第二个参数是周期时间,单位是毫秒
二、setTimeout(,)
- 在指定的时间之后执行函数体,如果有输出,也会不间断输出
- 第一个参数也是要被执行的函数体
- 第二个参数是指定的延迟时间,单位是毫秒
停止定时器的方法:
一、clearclearInterval()
- 停止由 setInterval() 方法调用的定时器
- 提前定义一个变量(一般用timer)接收setInterval(),执行结束后直接把变量传入 clearInterval()
二、clearTimeout()
- 使用方法同上
1 <script> 2 window.onload = function () { 3 //需求:点击关闭,广告栏消失,用定时器添加渐变效果 4 var timer = 0; 5 var ad = document.getElementsByClassName('ad')[0]; 6 var a = ad.children[0].firstElementChild || ad.children[0].firstChild; 7 8 a.onclick = function () { 9 //设置定时器 10 timer = setInterval(function() { 11 ad.style.opacity -= 0.1; 12 //透明度为0后,隐藏广告栏,清除定时器 13 if (ad.style.opacity <= 0) { 14 ad.style.display = "none"; 15 clearInterval(timer); 16 } 17 },50); 18 } 19 20 21 var ad_both = document.body.children; 22 setTimeout(function() { 23 ad_both[1].style.display = "none"; 24 ad_both[2].style.display = "none"; 25 },5000); 26 clearTimeout(timer); 27 } 28 </script> 29 </head> 30 <body> 31 <div class="top_banner"> 32 <div class="nav">导航栏</div> 33 <div class="ad w" style="opacity: 1;"> <!--这里不懂,不是行内式的时候,有bug--> 34 <div class="close_ad"> 35 <a href="#">×</a> 36 </div> 37 </div> 38 <div class="search w"></div> 39 </div> 40 <div class="ad_l">我将于5秒后自动消失</div> 41 <div class="ad_r">我将于5秒后自动消失</div> 42 </body>