2012-03-30 99 views
0

花費數小時試圖解決我的應用程序中發生的事情後,我發現設置JavaScript間隔的代碼存在問題。在asp.net ajax應用程序中使用javascript倒數計時器

這裏是我的代碼,設置間隔......

Sys.Application.add_load(function PageLoad(sender, args) { 

     var timer = $("#lbTimer"); 
     var intVal = ""; 
     var verifiedTime = Date.parse(timer.html()); 

     if ($("#imgLock").hasClass("hidden") && !isNaN(verifiedTime) && verifiedTime != null) { 

      $("#imgLock").addClass("hidden"); 
      $("#imgUnlock").removeClass("hidden"); 

      intVal = setInterval(function() { 
       $("#lbTimer").html(function() { 
        var t = parseInt((new Date() - verifiedTime)/1000, 10); 
        t %= 3600; 
        var m = Math.floor(t/60); 
        var s = Math.floor(t % 60); 

        if (m == 0 && s == 0) { 

         $("#lbLocked").removeClass("hidden"); 
         $("#imgLock").removeClass("hidden"); 
         $("#imgUnlock").addClass("hidden"); 
         $("#lbTimer").html(""); 
         window.clearInterval(intVal); 
         verifiedTime = ""; 
        } else { 
         if (s == 0) { 
          $(this).html((m + ":0" + s).replace("-", "")); 
         } else { 
          $(this).html((m + 1 + ":" + s).replace("-", "")); 
         } 

         if (s > -10) { 
          if (m == -1) { 
           $(this).html($(this).html().replace(":", ":0")); 
          } else { 
           $(this).html($(this).html().replace("-", "0")); 
          } 
         } else { 
          $(this).html($(this).html().replace("-", "")); 
         } 
        } 
       }); 
      }, 1000); 

      $("#lbTimer").removeClass("hidden"); 


}); 

現在,這是否有一個全頁重裝工作絕對沒問題。問題是我正在開發一個支持Ajax的網站,並且更新內的所有內容都會更新。

我遇到的問題是,當updatepanel面板更新一個新的JavaScript間隔正在創建,所以另一個計數器被添加到#lbTimer導致2個或更多的倒計時定時器之間閃爍。

很明顯,當腳本在每個頁面上運行時,沒有辦法清除頁面上已經運行的間隔,我可以看到它,這導致了多個定時器。

我在以下內容中添加了一些內容,但是我需要定時器再次更新部分頁面加載。

if (!args.get_isPartialLoad()) { 
//Timer code here 
} 

沒有人有任何意見或建議我如何使用我的應用程序一個javascript倒數計時器讓我明確的時間間隔創建部分頁面加載一個新的?

希望我已經提供了足夠的細節,但如果需要,我可以添加更多細節。

在此先感謝您的時間和幫助!

回答

0

寫在部分負荷的followig清除關閉定時器預先設定

var intervalID; 
var resetTimer = function() { 
if (intervalID) { 
clearInterval(intervalID) }; 
intervalID = setInterval(function() { your code here....}; 
+0

感謝您的快速響應。 我不確定我是否正確使用它,但當頁面加載(部分)時,intVal總是返回爲「undefined」 – 2012-03-30 15:43:17