个人作品集网站,企业网站优化方案模板,京东商城网站的搜索引擎营销做的案例分析,添加书签网站代码setTimeout和setInterval的使用 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript。不过两者各有各的应用场景。 方 法 实际上#xff0c;setTimeout和setInterval的语法相同。它们都有两个参数#xff0c;一个是将要执行的代码字符串#xff0c;还有一个是以…setTimeout和setInterval的使用 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript。不过两者各有各的应用场景。 方 法 实际上setTimeout和setInterval的语法相同。它们都有两个参数一个是将要执行的代码字符串还有一个是以毫秒为单位的时间间隔当过了那个时间段之后就将执行那段代码。 不过这两个函数还是有区别的setInterval在执行完一次代码之后经过了那个固定的时间间隔它还会自动重复执行代码而setTimeout只执行一次那段代码。 虽然表面上看来setTimeout只能应用在on-off方式的动作上不过可以通过创建一个函数循环重复调用setTimeout以实现重复的操作 File: settimeout_setinterval.js showTime(); function showTime() { var today new Date(); alert(The time is: today.toString()); setTimeout(showTime(), 5000); } 一旦调用了这个函数那么就会每隔5秒钟就显示一次时间。如果使用setInterval则相应的代码如下所示 File: settimeout_setinterval2.js setInterval(showTime(), 5000); function showTime() { var today new Date(); alert(The time is: today.toString()); } 这两种方法可能看起来非常像而且显示的结果也会很相似不过两者的最大区别就是setTimeout方法不会每隔5秒钟就执行一次showTime函数它是在每次调用setTimeout后过5秒钟再去执行showTime函数。这意味着如果showTime函数的主体部分需要2秒钟执行完那么整个函数则要每7秒钟才执行一次。而setInterval却没有被自己所调用的函数所束缚它只是简单地每隔一定时间就重复执行一次那个函数。 如果要求在每隔一个固定的时间间隔后就精确地执行某动作那么最好使用setInterval而如果不想由于连续调用产生互相干扰的问题尤其是每次函数的调用需要繁重的计算以及很长的处理时间那么最好使用setTimeout。讨 论 如果对计时函数不加以处理那么setInterval将会持续执行相同的代码一直到浏览器窗口关闭或者用户转到了另外一个页面为止。不过还是有办法可以终止setTimeout和setInterval函数的执行。 当setInterval调用执行完毕时它将返回一个timer ID将来便可以利用该值对计时器进行访问如果将该ID传递给clearInterval便可以终止那段被调用的过程代码的执行了具体实现如下 File: settimeout_setinterval3.js (excerpt) var intervalProcess setInterval(alert(GOAL!), 3000); var stopGoalLink document.getElementById(stopGoalLink); attachEventListener(stopGoalLink, click, stopGoal, false); function stopGoal() { clearInterval(intervalProcess); } 只要点击了stopGoalLink不管是什么时候点击intervalProcess都会被取消掉以后都不会再继续反复执行intervalProcess。如果在超时时间段内就取消setTimeout那么这种终止效果也可以在setTimeout身上实现具体实现如下 File: settimeout_setinterval4.js (excerpt) var timeoutProcess setTimeout(alert(GOAL!), 3000); var stopGoalLink document.getElementById(stopGoalLink); attachEventListener(stopGoalLink, click, stopGoal, false); function stopGoal() { clearTimeout(timeoutProcess); } 转自http://www.cnblogs.com/sk-net/archive/2008/01/24/1050770.html转载于:https://www.cnblogs.com/luodan/p/5617480.html