效果1: 三年以来再一次接触JS,比较蛋疼的日期开始了。


当一个页面有一个表格,表格的数据是循环迭代得到的,里面有一列时间列,需要在另外一列显示和当前时间的时间差。
页面使用:
<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代码:

/**
 * @param {Object} obj   倒计时时间 格式为yyyy-MM-dd HH:mm:ss
 * @param {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
 * @param {Object} i
 */
function checkTime(i) {
    if (i < 10) {
        i = "0" + i;
    }
    return i;
}

/**
 * 设置保持的时间
 * @param {Object} SysSecond   传递的时间
 * @param {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;
    }
}


171314_fqee_859173.png

转载于:https://my.oschina.net/wanyuxiang000/blog/388521

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值