2013-03-25 73 views
-4

我有以下代碼倒數計時器。我需要將JavaScript部分轉換爲jQuery。倒數計時器在頁面加載時啓動。我該怎麼做,因爲我必須在頁面加載時加載diffTime函數。請幫幫我。提前致謝。如何將JavaScript函數轉換爲jQuery的頁面加載倒數計時器

編輯:我得知,jquery調用不能從**函數CreateTimer()**中訪問**函數Tick()**。 jQuery中有沒有用於** setTimeout()**的庫?據我所知,它是原生的JS。

<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
    <script type="text/javascript"> 
     var Timer; 
     var TotalSeconds; 


     function CreateTimer(TimerID, Time) { 
      Timer = document.getElementById(TimerID); 
      TotalSeconds = Time; 
      //UpdateTimer() 
      window.setTimeout("Tick()", 1000); 
     } 

     function Tick() { 
      if (TotalSeconds <= 0) { 
       //alert("Time's up!") 
       document.getElementById("timeMsg").innerHTML = "Market closed!! "; 
       return; 
      } 

      TotalSeconds -= 1; 
      UpdateTimer() 
      window.setTimeout("Tick()", 1000); 
     } 

     function UpdateTimer() { 
      var Seconds = TotalSeconds; 

      var Days = Math.floor(Seconds/86400); 
      Seconds -= Days * 86400; 

      var Hours = Math.floor(Seconds/3600); 
      Seconds -= Hours * (3600); 

      var Minutes = Math.floor(Seconds/60); 
      Seconds -= Minutes * (60); 


      var TimeStr = ((Days > 0) ? Days + " days " : "") + LeadingZero(Hours) + ":" + LeadingZero(Minutes) + ":" + LeadingZero(Seconds) 


      Timer.innerHTML = TimeStr; 
     } 



     function LeadingZero(Time) { 

      return (Time < 10) ? "0" + Time : + Time; 

     } 

     function diffTime(){ 

      var startTime = 10*60 + 30; //starting time in minute 
      var lastTime = 16*60 + 30; //ending time in minutes 

      var thisTime = new Date();    // now 
      var currentYear = thisTime.getFullYear();   
      var currentMonth = thisTime.getMonth(); 
      var currentDay = thisTime.getUTCDate(); 
      var currentHour = thisTime.getHours(); 
      var currentMinute = thisTime.getMinutes(); 

      var currentTime = currentHour*60 + currentMinute; //current time in minute 

      if(currentTime >= startTime && currentTime < lastTime){ 

       var endTime = new Date(currentYear,currentMonth,currentDay,16,30); // 4:30pm   

       var diff = endTime.getTime() - thisTime.getTime(); // now 
       var remainTime = diff/(1000);  // positive number of days 
       remainTime = Math.ceil(remainTime); 
       CreateTimer("timer", remainTime); 


      }else{ 
       document.getElementById("timeMsg").innerHTML = "Market closed!! "; 
       document.getElementById("timer").innerHTML = "00:00:00"; 

      } 

     } 
     window.onload = diffTime; 
    </script> 


</head> 
<body> 

    <div><span id="timeMsg">Elapsed time remain: </span><b><span id='timer'></span></b></div> 


</body> 

+0

它看起來像你還沒有嘗試轉換它。 – Blender 2013-03-25 06:59:14

+1

先做基礎知識的研究。嘗試瞭解JavaScript到底是什麼,以及什麼是JQuery,你會得到答案。 – Rachcha 2013-03-25 06:59:51

+0

http://whathaveyoutried.com – VKen 2013-03-25 07:00:04

回答

0

通話中的document.ready()的函數

$(document).ready(function() 
    { 

diffTime(); 
}); 
+0

謝謝您的回覆。在我發佈之前,我已經嘗試過這種方式。但它沒有奏效。 – 2013-03-25 07:10:07

+0

你在頁面中包含了jQuery庫嗎? – Sharun 2013-03-25 07:25:55

+0

謝謝。 我已經使用 但我認爲它不能訪問Tick()函數。我不知道爲什麼,jQuery中有沒有setTimeout()的庫,據我所知它是原生的JS。 – 2013-03-25 07:37:19

0

如果你想讓它整個後開始(即圖像,對象等)的頁面加載:

$(window).load(function() {} 

否則,你可以啓動計時器,當HTML已加載& DOM已準備就緒:

$(document).ready(function() {} 
+0

謝謝你的tenub。我嘗試了這兩種方式,但它沒有奏效。 – 2013-03-25 07:11:22