1. 程式人生 > >js延時操作setTimeout和setInterval

js延時操作setTimeout和setInterval

var 窗口 new 設置 ear timer 有一個 eth mage

1.setTimeout

說明:
  有兩個參數,一個是將要執行的代碼字符串,還有一個是以毫秒為單位的時間間隔,當過了那個時間段之後就將執行那段代碼.且只執行一次

/*按鈕禁用10秒*/
setTimeout(disabledSubmitButton("bt01"), 1000*10);

function disabledSubmitButton(submitButtonName) {
        $("#"+submitButtonName).removeAttr("disabled");//將按鈕可用
}

2.setInterval

說明:
  有兩個參數,一個是將要執行的代碼字符串,還有一個是以毫秒為單位的時間間隔,當過了那個時間段之後就將執行那段代碼.會重復執行;可應用於倒計時.

// 每10獲取一次時間
setInterval("showTime()" , 1000*10 );
function showTime(){
    // js獲取日期時間
    var newDate = getDateTime();
    alert("當前日期時間是:" + newDate);
}

// js獲取日期時間
function getDateTime(){
    var dateObj = new Date(); //表示當前系統時間的Date對象
    var year = dateObj.getFullYear(); //當前系統時間的完整年份值
    var month = dateObj.getMonth()+1; //當前系統時間的月份值
    var date = dateObj.getDate(); //當前系統時間的月份中的日
    var day = dateObj.getDay(); //當前系統時間中的星期值
    var weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    var week = weeks[day]; //根據星期值,從數組中獲取對應的星期字符串
    var hour = dateObj.getHours(); //當前系統時間的小時值
    var minute = dateObj.getMinutes(); //當前系統時間的分鐘值
    var second = dateObj.getSeconds(); //當前系統時間的秒鐘值
    var timeValue = "" +((hour >= 12) ? (hour >= 18) ? "晚上" : "下午" : "上午" ); //當前時間屬於上午、晚上還是下午

    return dateFilter(year)+"年"+dateFilter(month)+"月"+dateFilter(date)+"日 "+" "+dateFilter(hour)+":"+dateFilter(minute)+":"+dateFilter(second) + " " + week;
}

效果:
技術分享圖片

3.清除

  如果對計時函數不加以處理,那麽setInterval將會持續執行相同的代碼,一直到瀏覽器窗口關閉,或者用戶轉到了另外一個頁面為止.不過還是有辦法可以終止setTimeout和setInterval函數的執行.當setInterval調用執行完畢時,它將返回一個timer ID,將來便可以利用該值對計時器進行訪問,如果將該ID傳遞給clearInterval,便可以終止那段被調用的過程代碼的執行了,具體實現如下:

var obj01 = setTimeout(disabledSubmitButton("bt01"), 1000*10);
<!-- 清除已設置的setTimeout對象 -->
clearTimeout(obj01)

var obj02 = setInterval("showTime()" , 1000*10 );
<!-- 清除已設置的setInterval對象 -->
clearInterval(obj02);

js延時操作setTimeout和setInterval