DIV CSS 佈局教程網

10.6 定時器
編輯:JavaScript基礎知識     

什麼叫定時器?我們可以看到 學習網首頁有一個“圖片輪播”特效,每隔2s圖片變換一次,這裡就用到了定時器。啊,定時器,太重要了!天塌下來,大家都要扛著把它學會先。

定時器用途非常廣,在圖片輪播、在線時鐘、彈窗廣告等地方大顯身手。凡是自動執行的東西,很大可能都是跟定時器有關。

在JavaScript中,關於定時器的實現,我們有2組方法:

  • (1)setTimeout()和clearTimeout();
  • (2)setInterval()和clearInterval();

這一節的例子使用“在線測試”不會有效果,請大家自行把代碼復制到本地編輯器進行測試預覽。下面我們詳細分析這2組方法的用法與不同。

一、setTimeout()和clearTimeout()

在JavaScript中,我們可以使用setTimeout()方法來設置“一次性”調用的函數。其中clearTimeout()可以用來取消執行setTimeout()方法。

語法:

 
var 變量名 = setTimeout(code , time);

說明:

參數code可以是一段代碼,也可以是一個調用的函數名;

參數time表示時間,表示要過多長時間才執行code中的內容,單位為毫秒。

舉例:參數code是一段代碼

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        window.onload = function () {
            setTimeout("alert('歡迎來到 學習網');", 2000);
        }
    </script>
</head>
<body>
    <p>2秒後提示歡迎語。</p>
</body>
</html>

在浏覽器預覽效果如下:

分析:

打開頁面2秒後,浏覽器會彈出歡迎語。由於setTimeout()方法只會執行一次,所以只會彈出一次對話框。彈出對話框如下圖:

舉例2:參數code是一個函數名

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        window.onload = function () {
            setTimeout("welcome()", 2000);
        }
        function welcome() {
            alert("歡迎來到 學習網");
        }
    </script>
</head>
<body>
    <p>2秒後提示歡迎語。</p>
</body>
</html>

在浏覽器預覽效果如下:

分析:

舉例1和舉例2實際效果是相同的,只不過參數code不一樣罷了。

二、setInterval()和clearInterval()

在JavaScript中,我們可以使用setInterval()方法來設置“重復性”調用的函數。其中clearInterval()可以用來取消執行setTimeout()方法。

語法:

 
var 變量名 = setInterval (code , time);

說明:

參數code可以是一段代碼,也可以是一個調用的函數名;

參數time表示時間,表示要過多長時間才執行code中的內容,單位為毫秒。

setTimeout()方法與setInterval()方法的語法很相似,實際上這兩者在用法方面區別非常大。其中setTimeout()方法內的代碼只會執行一次,而setInterval()方法內的代碼會重復性執行,除非你使用clearInterval()方法來取消執行。

舉例:

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
    <script type="text/javascript">
        //定義全局變量,用於記錄秒數
        var n = 5;
        window.onload = function () {
            //設置定時器,重復執行函數countDown()
            var t = setInterval("countDown()", 1000);
        }
        //定義函數
        function countDown() {
            //判斷n是否大於0,因為倒計時不可能有負數
            if (n > 0){
                n--;
                document.getElementById("num").innerHTML = n;
            }
        }
    </script>
</head>
<body>
    <p>新年倒計時:<span id="num">5</span></p>
</body>
</html>

在浏覽器預覽效果如下:

分析:

window.onload表示在頁面加載完畢執行,在“JavaScript頁面相關事件”我們會詳細講解到。

setInterval()方法會重復執行某一段代碼或函數。如果這個例子使用setTimeout方法就不能實現了,因為setTimeout()方法只會執行一次,而setInterval()會重復執行。

舉例:

在線測試
 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        //定義全局變量,用於記錄秒數
        var n = 0;
        window.onload = function () {
            //設置定時器,重復執行函數add()
            var t = setInterval("add()", 1000);
            //點擊“暫停”按鈕事件
            document.getElementById("btn_pause").onclick = function () {
                clearInterval(t);
            }
            //點擊“繼續”按鈕事件
            document.getElementById("btn_continue").onclick = function () {
                if (confirm("你還要繼續裝逼?")){
                    t = setInterval("add()", 1000);
                } 
            }
        }
        //定義計時函數
        function add() {
            n++;
            document.getElementById("num").innerHTML = n;
        }
    </script>
</head>
<body>
    <p>你已經裝了<span id="num">0</span>秒的“逼”,趕緊暫停吧!</p>
    <input id="btn_pause" value="暫停" type="button"/>
    <input id="btn_continue" value="繼續" type="button" />
</body>
</html>

在浏覽器預覽效果如下:

分析:

這裡我做了一個小程序,其中使用setInterval()方法重復執行計時函數,並且利用按鈕點擊事件配合clearInterval()方法來進行“暫停”。

對於初學者來說,這個程序可能有點復雜,涉及了JavaScript對話框、DOM操作和JavaScript事件。請大家學習了後續課程再來看看。

這一節,我們把定時器的語法簡單給大家做個介紹,在後面課程或者以後開發中,你們會經常見到定時器的身影。

總結

1、在JavaScript中,關於定時器的實現,我們有2組方法:

  • (1)setTimeout()和clearTimeout();
  • (2)setInterval()和clearInterval();

2、setTimeout()方法內的代碼只會執行一次,而setInterval()方法內的代碼會重復性執行。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved