显示倒计时的一段小脚本

  1. <divid="divTimeRemains">xxxx</div>
  2. <scriptlanguage="JavaScript"type="text/javascript">
  3. String.prototype.leftPad=function(n,s){
  4. ss=s||"";
  5. if(this.length<n){
  6. varts=newArray(n-1);
  7. ts[n-1]=this;
  8. for(vari=0;i<n-this.length;i++){
  9. ts[i]=s;
  10. }
  11. returnts.join("");
  12. }else{
  13. returnthis;
  14. }
  15. }
  16. Date.prototype.format=function(style){
  17. varo={
  18. "M+":this.getMonth()+1,//month
  19. "d+":this.getDate(),//day
  20. "h+":this.getHours(),//hour
  21. "m+":this.getMinutes(),//minute
  22. "s+":this.getSeconds(),//second
  23. "w+":"/u65e5/u4e00/u4e8c/u4e09/u56db/u4e94/u516d".charAt(this.getDay()),//week
  24. "q+":Math.floor((this.getMonth()+3)/3),//quarter
  25. "S":this.getMilliseconds()//millisecond
  26. }
  27. if(/(y+)/.test(style)){
  28. stylestyle=style.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
  29. }
  30. for(varkino){
  31. if(newRegExp("("+k+")").test(style)){
  32. stylestyle=style.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));
  33. }
  34. }
  35. returnstyle;
  36. };
  37. //script'sbegin...
  38. vartimeEnd=newDate(2009,3,27,9,0,0);
  39. functionshowRemainsTime(){
  40. vartimeNow=newDate();
  41. vartimeRemains=timeEnd-timeNow;
  42. varrs=[];
  43. rs[rs.length]="距离";
  44. rs[rs.length]=timeEnd.format("yyyy年MM月dd日h点还有:");
  45. rs[rs.length]=Math.floor(timeRemains/(1000*60*60*24));
  46. rs[rs.length]="天";
  47. rs[rs.length]=(Math.floor(timeRemains/(1000*60*60))%24).toString().leftPad(2,"0");
  48. rs[rs.length]="小时";
  49. rs[rs.length]=(Math.floor(timeRemains/(1000*60))%60).toString().leftPad(2,"0");
  50. rs[rs.length]="分";
  51. rs[rs.length]=(Math.floor(timeRemains/1000)%60).toString().leftPad(2,"0");
  52. rs[rs.length]="秒";
  53. document.getElementById("divTimeRemains").innerHTML=rs.join("");
  54. setTimeout("showRemainsTime()",1000);
  55. }
  56. showRemainsTime();
  57. //script'send...
  58. </script>

速度和效率应该都还行吧。想再快点,可以把1000 * 60 * 60这些值算出来。没算的原因是便于理解。采用了数组join的方式来提高字符串组合的速度。

你可能感兴趣的:(倒计时)