js:运用JavaScript写一个倒计时模版

首先,让我们来分析一下如何来写一个倒计时;

目录

第一步:获取当前时间和获取截止时间;

第二步:得出时间差值,计算天、时、分、秒;

第三步:拼接字符串,将结果输出到对应的标签中;

第四部:封装函数,调用函数以及运用定时器调用函数


第一步:获取当前时间和获取截止时间;

获取当前时间

var nowtime = new Date().getTime();

因为为了后续的方便计算,我们获取当前时间的总毫秒数,

getTime()获取1970年1月1日距当前时间的毫秒数。

获取截止时间(里面时间可以根据实际情况修改,这里只做举例)

var deadline = new Date("2022/8/28 00:00:00").getTime();

第二步:得出时间差值,计算天、时、分、秒;

计算时间差值

 var differtime = deadline - nowtime;

根据差值计算天、时、分、秒

 var day = Math.floor(differtime / 1000 / 60 / 60 / 24);
            var hours = Math.floor(differtime / 1000 / 60 / 60 % 24);
            var minute = Math.floor(differtime / 1000 / 60 % 60);
            var second = Math.floor(differtime / 1000 % 60);

为了时间观看美观,我们还可以在数字小于10时,添加一个0;

if (hours < 10) {
                hours = "0" + hours;
            }
            if (minute < 10) {
                minute = "0" + minute;
            }
            if (second < 10) {
                second = "0" + second;
            }

第三步:拼接字符串,将结果输出到对应的标签中;

这时候js部分已经基本差不多快结束了,就差最后的输出和定时器部分了;

现在开始对页面进行制作

创建一个html部分(为了实现一个函数的多次使用这里我们创建三个倒计时)

<p>活动截止时间:2022/8/28 00:00:00</p>
    <p>活动倒计时:<span class="time"></span></p>
    <p>活动倒计时:<span class="time"></span></p>
    <p>活动倒计时:<span class="time"></span></p>

获取html元素(注意因为有多个time类名,所以这里我们使用querySelectorAll进行选择)

var timer = document.querySelectorAll('.time');

将输出结果拼接成一个字符串,方便后面调用

 var remaining = day + '天' + hours + '时' + minute + '分' + second + '秒';

遍历数组,使js可多次运用

for (let i = 0; i < timer.length; i++) {
                timer[i].innerHTML = remaining;
            }

第四部:封装函数,调用函数以及运用定时器调用函数

js部分如下:

<script>
        var timer = document.querySelectorAll('.time');
        var deadline = new Date("2022/8/28 00:00:00").getTime();
        function set() {
            var nowtime = new Date().getTime();
            var differtime = deadline - nowtime;
            // 获取 天 时 分 秒
            var day = Math.floor(differtime / 1000 / 60 / 60 / 24);
            var hours = Math.floor(differtime / 1000 / 60 / 60 % 24);
            var minute = Math.floor(differtime / 1000 / 60 % 60);
            var second = Math.floor(differtime / 1000 % 60);
            if (hours < 10) {
                hours = "0" + hours;
            }
            if (minute < 10) {
                minute = "0" + minute;
            }
            if (second < 10) {
                second = "0" + second;
            }
            var remaining = day + '天' + hours + '时' + minute + '分' + second + '秒';
            for (let i = 0; i < timer.length; i++) {
                timer[i].innerHTML = remaining;
            }
        }
        set();
        setInterval(set, 1000); 

    </script>

最后,效果展示

 总体应该没有太多问题,但由于本人毕竟资历尚浅,若有考虑不周之处,还劳烦各位在评论区。为我指点一二。同时也可以希望这篇文章能帮助到需要帮助的人。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,需要在Vue组件的data中定义一个变量,来存储倒计时的剩余时间: ```javascript data() { return { countDown: 60 // 倒计时初始值,单位:秒 } } ``` 然后,在模板中,需要使用一个按钮来触发倒计时,并且根据剩余时间的不同,显示不同的文本和状态: ```html <template> <div> <button :disabled="countDown > 0" @click="startCountdown"> {{ countDown > 0 ? `${countDown}秒后重试` : '获取验证码' }} </button> </div> </template> ``` 注意,在按钮上使用了一个`disabled`属性,用于在倒计时期间禁用按钮。 接下来,在Vue组件的methods中,需要编启动倒计时的代码: ```javascript methods: { startCountdown() { this.countDown = 60 // 重置倒计时为初始值 const timer = setInterval(() => { if (this.countDown <= 0) { clearInterval(timer) // 倒计时结束,清除定时器 return } this.countDown-- // 每秒减一 }, 1000) } } ``` 具体来说,就是使用`setInterval`函数,每隔一秒更新一次剩余时间的值,直到倒计时结束,使用`clearInterval`函数清除定时器。 完整的代码如下: ```html <template> <div> <button :disabled="countDown > 0" @click="startCountdown"> {{ countDown > 0 ? `${countDown}秒后重试` : '获取验证码' }} </button> </div> </template> <script> export default { data() { return { countDown: 60 // 倒计时初始值,单位:秒 } }, methods: { startCountdown() { this.countDown = 60 // 重置倒计时为初始值 const timer = setInterval(() => { if (this.countDown <= 0) { clearInterval(timer) // 倒计时结束,清除定时器 return } this.countDown-- // 每秒减一 }, 1000) } } } </script> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值