0

有人可以帮我添加一个前导零做我的倒计时 JavaScript。尝试了 3 个小时,现在我快疯了……这是干净的倒计时,没有我做过的任何奇怪的编码:

<script type="text/javascript">

var strTargetDate = "05/16/2014 12:00 AM";
var strFormat = "$DAYS$ $HOURS$ $MINUTES$ $SECONDS$";
var strExpired = "DONE";

function doCountDown(seconds)
{
   if (seconds < 0)
   {
      document.getElementById("countdown").innerHTML = strExpired;
      return;
   }
   var strMsg = strFormat;
   strMsg = strMsg.replace("$DAYS$",    ((Math.floor(seconds/86400))%100000).toString());
   strMsg = strMsg.replace("$HOURS$",   ((Math.floor(seconds/3600))%24).toString());
   strMsg = strMsg.replace("$MINUTES$", ((Math.floor(seconds/60))%60).toString());
   strMsg = strMsg.replace("$SECONDS$",  ((Math.floor(seconds))%60).toString());

   document.getElementById("countdown").innerHTML = strMsg;

   setTimeout("doCountDown(" + (seconds-1).toString() + ")", 1000);
}

function initCountDown()
{
   var dtTarget = new Date(strTargetDate);
   var dtNow = new Date();
   var dtDiff = new Date(dtTarget-dtNow);
   var totalSeconds = Math.floor(dtDiff.valueOf()/1000);

   doCountDown(totalSeconds);
}

initCountDown();

</script>
4

1 回答 1

0

检测值是否太小是一件简单的事情,如果是,请自己添加前缀。

类似替换的东西:

strMsg = strMsg.replace("$SECONDS$",  ((Math.floor(seconds))%60).toString());

和:

var secs_str = ((Math.floor(seconds)) % 60).toString();
if (secs_str.length < 2) {
    strMsg = strMsg.replace("$SECONDS$", "0" + secs_str);
} else {
    strMsg = strMsg.replace("$SECONDS$", secs_str);
}

请注意,我没有测试过该代码,但您应该了解基本概念。

于 2014-02-13T10:46:12.487 回答