2013-03-25 71 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