1. 程式人生 > 其它 >完成計時器的暫停和繼續

完成計時器的暫停和繼續

今天完成了一個報警彈窗功能的修改,因為功能是使用定時器進行ajax請求獲取資料的,定時器定時請求會造成頁面的閃爍,請求到一定時間頁面請求速度變快(未解決),所以利用彈窗彈出的時候關閉定時器,彈窗關閉的時候再重新開啟定時器,由於定時器多個頁面都要使用,所以統一在layout中寫入。彈出視窗和關閉視窗是兩個不同的方法,利用變數不宣告直接使用的方式來獲取定時器控制代碼

//關閉彈窗 function ClosePopup(i, num) { $(".FloorGiveInfoClose_" + i).remove(); document.getElementById("sound").src = ""; $.post("/ALAPerimeterRecord/UpdateAlarmState", { DeviceNumber: num }, function (res) { }) Timer = setInterval('BiogasConcentration()', 3000); }


下面是定時器請求

` //沼氣達到一定條件報警
var Timer = setInterval('BiogasConcentration()', 3000);
function BiogasConcentration() {
var data = {
}
$.ajax({
type: "POST",
url: "/ALAPerimeterRecord/BiogasConcentration?r=" + Math.random(),
data: data,
//result獲取的事json字串
success: function (result) {
if (result == "") {
return;
}
var obj = JSON.parse(result);
if (obj.length > 0) {
document.getElementById("sound").src = "../../audio/純音樂%20-%20消防警報聲.mp3";
for (var i = 0; i < obj.length; i++) {
$("#VidelDivHtml").css("display", "none");

                    var text = '<div class="body_window FloorGiveInfoClose_' + i + '" style=" display:block;">' +
                '<div>' +
                    '<div class="window_title">' +
                '告警資訊' +
                    //  '<img src="../../img/home/on_window.png" onclick="AlarmWaterRecord(' + i + ',' + obj[i].Area + ')"  alt="">' +
                ' </div>' +
                '<div class="window_div">' +
                ' <div class="window_div_top1">' +
                ' <img src="../../img/home/logo_window.png" alt="">' +
                '  <div>' +
                '  <div>【沼氣濃度報警】' + obj[i].DeviceName + ' ' + (obj[i].DeviceCode == 1 ? "" : ':沼氣濃度:' + obj[i].DeviceValue + '') + '</div>' +
                '  <div>時間:' + obj[i].CreateTime + '</div>' +
                ' </div>' +
                ' </div>' +
                ' <div class="window_button">' +
                '   <div>' +
                '       <div class="button_1" onclick="ClosePopup(' + i + ',' + 1 + ')">' +
                '          確認並關閉' +
                '       </div>' +
                '   </div>' +
                ' </div>' +
                '  </div>' +
                ' </div>' +
                '</div>';
                    $("#FloorGiveInfoClose").append(text);
                    console.log($("#sound").attr("src"));
                    if ($("#sound").attr("src") != "") {
                        clearTimeout(Timer)
                    }
                    setTimeout("ClosePopup(" + (i) + ",'" + obj[i].Area + "')", 30000);
                }
            }
        }
    })
}

`