现在的位置: 首页 > 综合 > 正文

显示倒计时的一段小脚本

2013年09月18日 ⁄ 综合 ⁄ 共 2136字 ⁄ 字号 评论关闭
  1. <div id="divTimeRemains">xxxx</div>
  2. <script language="JavaScript" type="text/javascript">
  3. String.prototype.leftPad = function(n, s) {
  4.     ss = s || " ";
  5.     if (this.length < n) {
  6.         var ts = new Array(n - 1);
  7.         ts[n - 1] = this;
  8.         for (var i = 0; i < n - this.length; i++) {
  9.             ts[i] = s;
  10.         }
  11.         return ts.join("");
  12.     } else {
  13.         return this;
  14.     }
  15. }
  16. Date.prototype.format = function(style) {
  17.     var o = {
  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(var k in o){
  31.         if (new RegExp("("+ 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.     return style;
  36. };
  37. //script's begin...
  38. var timeEnd = new Date(2009, 3, 27, 9, 0, 0);
  39. function showRemainsTime(){
  40.     var timeNow = new Date();
  41.     var timeRemains = timeEnd - timeNow;
  42.     var rs = [];
  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's end...
  58. </script>

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

【上篇】
【下篇】

抱歉!评论已关闭.