1. 程式人生 > >JavaScript定時器

JavaScript定時器

語句 ssa clear 引用 element oat cap border width

JavaScript定時器恢復

Windows對象包含了4個定時器方法,說明如下表所示:

Windows對象定時器方法列表
方法 說明
setTimeout() 在指定的毫秒數後調用函數或計算表達式
setInterval() 按照在指定的周期(以毫秒計)來調用函數或計算表達式
clearTimeout() 取消setTimeout()方法生成的定時器對象
clearInterval() 取消setInterval()方法生成的定時器對象

1. setTimeout()方法

setTimeout()方法在指定的時間段後執行的代碼。其中擁有兩個參數值,分別是code和delay,其中參數code表示要延遲執行的代碼,可以包含多個語句,語句之間要用分號進行分隔,delay表示要延遲的時間,以毫秒為單位計時。

示例:當鼠標經過段落文本時時顯示 “段落文本”。

          var p=document.getElementsByTagName("p")[0];
          p.onmouseover=function(){
              setTimeout(function(){
                  alert(“段落文本”);
              },1000);
          }

也可將JavaScript代碼封裝在函數體內,然後引用函數作為參數傳遞給setTimeout()方法,這樣就可以避免了傳遞代碼眾多而造成不必要的麻煩。

示例:如何為集合中每一個元素綁定延遲事件。

         var o=document.getElementsByTagName("body")[0].childNodes;//獲取body元素下所用子元素
         for(var i=0;i<o.length;i++){
             o[i].onmouseover=function(i){
                 return function(){
                     f(o[i]);   //將js代碼封裝在一個函數體中作為參數傳給setTimeout
                 }
             }(i);
         }
         
function f(o){ var out=setTimeout(function(){ alert(o.tagName) },500); }

這樣就可以當鼠標經過body元素下的子元素時,延遲半秒後彈出該元素的名稱。

2. clearTimeout()方法

clearTimeout()方法表示在特定的情況下清除要延遲的代碼,這樣就可以避免了函數之間的互相幹擾。

列如:當鼠標停留在某個元素時,半秒後才會彈出提示信息,一旦鼠標提前離開該元素,就立即清除前面定義的延遲處理事件函數。

         var o=document.getElementsByTagName("body")[0].childNodes;
         for(var i=0;i<o.length;i++){
             o[i].onmouseover=function(i){
                 return function(){
                     f(o[i]);   
                 }
             }(i);
             o[i].onmouseout=function(i){
                 return function(){
                     clearTimeout(o[i].out);//清除延遲處理的函數
                 }
             }(i);
         }
         function f(o){
             o.out=setTimeout(function(){
                 alert(o.tagName)
             },500);
         }

也可以這這樣使用clearTimeout()方法:

示例:在文本框中按秒針速度顯示遞增的數字,當循環10次後調用clearTimeout()方法清除對延遲代碼的執行,並彈出提示信息。

         <body>
         <input type="text" />
         </body>
         <script>    
         var t=document.getElementsByTagName("input")[0];
         var i=1;
         function f(){
             var out=setTimeout(
                 function(){
                     t.value=i++;
                     f();
                 },1000);
                 if(i>10){
                     clearTimeout(out);
                     alert("時間到");
                 }
         }   
         f();
         </script> 

3. setInterval()方法

setInterval()方法的用法和setTimeout()方法的用法基本相同,其中參數為code和interval,只是參數code表示要周期性執行的代碼,參數interva表示周期的時間間隔,也是以毫秒為單位。

如上的示例:在文本框中按秒針速度顯示遞增的數字,當循環10次後調用clearTimeout()方法清除對延遲代碼的執行,並彈出提示信息。

            //setInterval()用法和setTimeout()用法相同,只是code改為了周期性,即每個多久執行一次代碼
         var t=document.getElementsByTagName("input")[0];
         var i=1;
         var out=setInterval(f,1000);//定義周期性執行的函數
         function f(){
             t.value=i++;
             if(i>10){
               clearTimeout(out);
               alert("時間到");
             }
         }   

我的第一篇博客,還望大神們多多指教。

JavaScript定時器