JS倒计时效果

Posted dlx609

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS倒计时效果相关的知识,希望对你有一定的参考价值。

倒计时实现思路:
1-用户输入的时间减去当前的时间就是剩余的时间,即倒计时
2-不能用时分秒直接相减,因为出来的结果会是负数,比如01分减去15分,结果是负14分
3-需要引入时间戳的概念,用户输入时间的总毫秒数减去当前时间的总毫秒数,得到的就是剩余时间的毫秒数
4-最后把剩余时间的毫秒数转化成天、时、分、秒的格式化展示

静态倒计时

 

// 定义变量,用于接收用户输入的截止时间,初始化时默认2020-12-01 18:29:59
var deadline = prompt(\'请输入截止时间:\', \'2020-12-01 18:29:59\');

// 定义倒计时函数
function countDown() 
    var currentTime = +new Date(); // 当前时间距离1970-01-01 00:00:00的毫秒数
    var futureTime = +new Date(deadline); // 用户输入的截止时间距离1970-01-01 00:00:00的毫秒数
    var times = (futureTime - currentTime) / 1000; // 截止时间减去当前时间还剩下多少秒
    var d = parseInt(times / 60 / 60 / 24); // 将剩余秒数转化成天数,舍弃了不足1天的部分
    d = d < 10 ? \'0\' + d : d; // 三元表达式,小于10,在数字前面补0,实现两位数展示
    var h = parseInt(times / 60 / 60 % 24); // 将不足1天的部分,转化为小时,舍弃了不足1小时的部分
    h = h < 10 ? \'0\' + h : h; // 三元表达式,小于10,在数字前面补0,实现两位数展示
    var m = parseInt(times / 60 % 60); // 将不足1小时的部分,转化为分钟,舍弃了不足1分钟的部分
    m = m < 10 ? \'0\' + m : m; // 三元表达式,小于10,在数字前面补0,实现两位数展示
    var s = parseInt(times % 60); // 将不足1分钟的部分,转化为秒数,舍弃了不足1秒的部分
    s = s < 10 ? \'0\' + s : s; // 三元表达式,小于10,在数字前面补0,实现两位数展示

	// 页面输出倒计时
    document.write(\'距离活动结束,还有<br/>\' + d + \'天\' + h + \'时\' + m + \'分\' + s + \'秒\');


// 调用倒计时函数
countDown();

 

动态倒计时

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>倒计时效果</title>
</head>

<body>
    <!-- 设置一个空div用于接收倒计时 -->
    <div id="showCountDownTime"></div>
    
    <script>
        // 定义变量,用于接收用户输入的截止时间,初始化时默认2020-12-01 18:29:59
        var deadline = prompt(\'请输入截止时间:\', \'2020-12-01 18:29:59\');
        
        // 定义倒计时函数
        function countDown() 
            var currentTime = +new Date(); // 当前时间距离1970-01-01 00:00:00的毫秒数
            var futureTime = +new Date(deadline); // 用户输入的截止时间距离1970-01-01 00:00:00的毫秒数
            var times = (futureTime - currentTime) / 1000; // 截止时间减去当前时间还剩下多少秒
            var d = parseInt(times / 60 / 60 / 24); // 将剩余秒数转化成天数,舍弃了不足1天的部分
            d = d < 10 ? \'0\' + d : d; // 三元表达式,小于10,在数字前面补0,实现两位数展示
            var h = parseInt(times / 60 / 60 % 24); // 将不足1天的部分,转化为小时,舍弃了不足1小时的部分
            h = h < 10 ? \'0\' + h : h; // 三元表达式,小于10,在数字前面补0,实现两位数展示
            var m = parseInt(times / 60 % 60); // 将不足1小时的部分,转化为分钟,舍弃了不足1分钟的部分
            m = m < 10 ? \'0\' + m : m; // 三元表达式,小于10,在数字前面补0,实现两位数展示
            var s = parseInt(times % 60); // 将不足1分钟的部分,转化为秒数,舍弃了不足1秒的部分
            s = s < 10 ? \'0\' + s : s; // 三元表达式,小于10,在数字前面补0,实现两位数展示

            // 通过id获取div对象,并赋值给变量oDiv
            var oDiv = document.getElementById(\'showCountDownTime\');
            // 利用HTML对象的innerHTML属性,将倒计时写入div
            oDiv.innerHTML = \'距离活动结束,还有<br/>\' + d + \'天\' + h + \'时\' + m + \'分\' + s + \'秒\';
        
        
        // 设置定时器,每个1秒钟调用倒计时函数
        setInterval(countDown, 1000);
    </script>
</body>
</html>

最终实现效果:

js实现60s倒计时效果

适用于获取验证码等其他场景,下面代码直接粘贴句可以使用

// 60s获取验证码的js与html
var timer = null;
var count = 60;
$(‘.box>button‘).click(function() {
var codeText = $(‘.code‘).text();
if (codeText == ‘获取验证码‘) {
timer = setInterval(function(){
count--;
$(‘.code‘).text(count+‘后获取验证码‘);
if (count <=0) {
clearInterval(timer);
$(‘.code‘).text(‘获取验证码‘);
}
},1000);
}
});
html:
<!-- 60s倒计时 -->
<div class=‘box‘>
<button class=‘code‘>获取验证码</button>
</div>

  

以上是关于JS倒计时效果的主要内容,如果未能解决你的问题,请参考以下文章

js 倒计时效果

js-------》(小效果)实现倒计时及时间对象

js倒计时效果

js实现倒计时效果

js实现60秒倒计时效果(使用了jQuery)

js实现60s倒计时效果