案例22-倒计时

 

老师版本

var input = document.querySelectorAll('#fill_in input');

var target = document.querySelector('#target strong');

var go = document.querySelector('#go');

var ps = document.querySelectorAll('#date p');

var nowDate = new Date();

var wishDate = null;

var timer = null;

var onOff = true;

//初始化

init();

/** 

 * 可以利用日期对象相减,得到他们之间的毫秒数的差值

 * 

*/

go.onclick = function(){

 

    if (!onOff){

        return;

    }

    onOff = false;

    var year = input[0].value;

    var month = input[1].value - 1;

    var day = input[2].value;

 

    wishDate = new Date(year, month, day);

 

    //把获取到的差值毫秒数换算成对应的天数

 

    timer = setInterval(function(){

        upDate();

    },1000);

    upDate();

 

}

//初始化

function init(){

    input[0].value = nowDate.getFullYear();

    input[1].value = nowDate.getMonth() + 1;

    input[2].value = nowDate.getDate();

    target.innerHTML = setFormat();

}

//设置格式

function setFormat(){

    var txt = nowDate.getFullYear() + '年' + (nowDate.getMonth() + 1) + '月' + nowDate.getDate() + '日';

    return txt;

}

//根据差值计算出对应的天数

function countDate(dis){

    var timeArr = [];

 

    var oneDay = 1000 * 60 * 60 * 24 ;

    var oneHour = 1000 * 60 * 60;

    var oneMinute = 1000 * 60;

    var oneSecond = 1000;

    timeArr[0] = parseInt(dis / oneDay);

    dis = dis % oneDay;

    timeArr[1] = parseInt(dis / oneHour);

    dis = dis % oneHour;

    timeArr[2] = parseInt(dis / oneMinute);

    dis = dis % oneMinute;

    timeArr[3] = parseInt(dis / oneSecond);

    // console.log(timeArr);

    for (var i = 0; i < timeArr.length;i++){

        timeArr[i] = fillZero(timeArr[i]);

    }

    console.log(timeArr);

    for (var i = 0; i < timeArr.length;i++){

        ps[i].innerHTML = timeArr[i];

    }

    // console.log(days, hours, minutes, seconds);

}

//补零

function fillZero(value){

    var str = '' + value;

    // console.log(str.length);

    if(str.length<2){

        str = '0' + str;

    }

    return str;

 

}

function upDate(){

    nowDate = new Date();

    var dis = wishDate - nowDate;

    if (dis <= 0) {

        alert('不需要执行倒计时');

        clearInterval(timer);

        onOff = true;

        return;

    }

    countDate(dis);

}


 


 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>倒计时 - 妙味课堂 - www.miaov.com</title>

<link href="style.css" rel="stylesheet" type="text/css" />

</head>

<body>

<div id="miaov">

    <div id="fill_in">

        <span class="title">请输入:</span>

        <input type="text" class="long_text" value="2019" />

        <span class="space1">年</span>

        <input type="text" class="text" value="9" />

        <span class="space2">月</span>

        <input type="text" class="text" value="17" />

        <span class="space3">日</span>

    </div>

    <a href="javascript:;" id="go" class="go"></a>

    <a href="javascript:;" id="go2" class="active"></a>

    <p id="target">

        现在距离 -

        <strong>2012年12月22日</strong>

        - 还剩:

    </p>

    <div id="date">

        <p id="day">000</p>

        <p id="hour">00</p>

        <p id="min">00</p>

        <p id="sec">00</p>

    </div>

    <h1 title="妙味课堂-www.miaov.com"><a href="http://www.miaov.com"></a></h1>

</div>

<script>

/*

    取整:

        向上取整: Math.ceil()

        向下取整: Math.floor()

        四舍五入: Math.round()

        取整: parseInt

*/

function $(cssSelector){

    var els = document.querySelectorAll(cssSelector);

    return els.length > 1?els:els[0];

};     

(function(){

    var go2 = $("#go2");

    var dateEl = $("#fill_in input");

    var target = $("#target strong");

    var dateTime;

    var timer = 0;

    go2.onclick = function(){

        var year = dateEl[0].value;

        var month = dateEl[1].value - 1;

        var date = dateEl[2].value;

        dateTime = new Date(year,month,date); // 目标时间

        // 求目标时间 和 当前时间 差了多少天

        target.innerHTML = dateTime.getFullYear() + '年'+(dateTime.getMonth()+1)+'月'+dateTime.getDate()+'日';

        timer = setInterval(toTime,1000);

        toTime();

    };

    function toTime(){

        var nowTime = Date.now();

        //console.log(dateTime - nowTime);

        var disTime = dateTime.getTime() - nowTime;

        if(disTime <= 0){ // 到时间了

            clearInterval(timer);

            $("#day").innerHTML = 0;

            $("#hour").innerHTML = 0;

            $("#min").innerHTML = 0;

            $("#sec").innerHTML = 0;

            alert("到时间了");

        } else {

            var day = parseInt(disTime/86400000);//多少天

            var hour = parseInt((disTime%86400000)/3600000);//多少小时

            var minute = parseInt((disTime%3600000)/60000);

            var second = parseInt((disTime%60000)/1000);

        //console.log(day,hour,minute,second);

            $("#day").innerHTML = day;

            $("#hour").innerHTML = hour;

            $("#min").innerHTML = minute;

            $("#sec").innerHTML = second;

        }

    }

})();

</script>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值