当一个页面有一个表格,表格的数据是循环迭代得到的,里面有一列时间列,需要在另外一列显示和当前时间的时间差。
页面使用:
<script type="text/javascript">
var matches = document.getElementsByName("countdown");//取得每条数据出发时间,把它当成倒计时的结束时间
var lessTimeShows = document.getElementsByName("lessTimeShow");//取得显示剩余时间的所有对象
for(var i=0;i<matches.length;i++){
var startTime = matches[i].value;
var lessTimeShow = lessTimeShows[i];
startTime = startTime.replace(/-/g,"/");//转换时间格式为:yyyy-MM-dd HH:mm:ss
countdownTimer(startTime,lessTimeShow);
}
</script>
js代码:
/**
* {Object} obj 倒计时时间 格式为yyyy-MM-dd HH:mm:ss
* {Object} param 显示到哪个目标对象
*/
function countdownTimer(obj, param) {
var flag = false;
var interValObj = window.setInterval(function() {
if (!flag) {
flag = setRemainTime(obj, param, flag);
} else {
window.clearInterval(interValObj);
}
}, 1000); //间隔函数,1秒执行
}
/**
* 检查时间是否是小于10,如果小于10,在前面位加0
* {Object} i
*/
function checkTime(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
/**
* 设置保持的时间
* {Object} SysSecond 传递的时间
* {Object} showParam 显示的目标对象
* @param {Object} flag 标志,如果倒计时时间为0,则清除这个倒计时
* @return {TypeName} 是否倒计时时间结束了
*/
function setRemainTime(SysSecond, showParam, flag) {
SysSecond = parseInt((new Date(SysSecond) - new Date()) / 1000);
if (SysSecond > 0) {
var dd = parseInt(SysSecond / 60 / 60 / 24, 10);//计算剩余的天数
var hh = parseInt(SysSecond / 60 / 60 % 24, 10);//计算剩余的小时数
var mm = parseInt(SysSecond / 60 % 60, 10);//计算剩余的分钟数
var ss = parseInt(SysSecond % 60, 10);//计算剩余的秒数
dd = checkTime(dd);
hh = checkTime(hh);
mm = checkTime(mm);
ss = checkTime(ss);
showParam.innerHTML = dd + "天" + hh + "时" + mm + "分" + ss + "秒";
flag = false;
return flag;
} else {
//剩余时间小于或等于0的时候,就停止间隔函数
//window.clearInterval(interValObj);
//这里可以添加倒计时时间为0后需要执行的事件
showParam.innerHTML = "结束";
flag = true;
return flag;
}
}