返回顶部
首页 > 资讯 > 前端开发 > node.js >JavaScript中怎么构建一个倒数计时器
  • 356
分享到

JavaScript中怎么构建一个倒数计时器

2024-04-02 19:04:59 356人浏览 独家记忆
摘要

javascript中怎么构建一个倒数计时器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,你需要设置一个有效的结束日期。这应该是Java

javascript中怎么构建一个倒数计时器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

首先,你需要设置一个有效的结束日期。这应该是JavaScript的 Date.parse()  方法可以理解的任何格式的字符串。例如:

ISO 8601格式:

const deadline = '2015-12-31';

简短格式:

const deadline = '31/12/2015';

或者,长格式:

const deadline = 'December 31 2015';

这些格式中的每一种都允许你指定一个准确的时间和一个时区(或者在ISO日期的情况下指定一个与UTC的偏移)。例如:

const deadline = 'December 31 2015 23:59:59 GMT+0200';

3.计算剩余时间下一步是计算剩余时间。我们需要编写一个函数,该函数需要一个表示给定结束时间的字符串(如上所述)。然后,我们计算该时间与当前时间之间的时差。看起来像这样:

function getTimeRemaining(endtime){   const total = Date.parse(endtime) - Date.parse(new Date());   const seconds = Math.floor( (total/1000) % 60 );   const minutes = Math.floor( (total/1000/60) % 60 );   const hours = Math.floor( (total/(1000*60*60)) % 24 );   const days = Math.floor( total/(1000*60*60*24) );    return {     total,     days,     hours,     minutes,     seconds   }; }

首先,我们要创建一个变量 total 以保留到截止日期为止的剩余时间。Date.parse()  函数将时间字符串转换为毫秒值,这样我们就可以将两次相减,得到中间的时间量。

const total = Date.parse(endtime) - Date.parse(new Date());

4.将时间转换为可用格式

现在我们要将毫秒转换为天,小时,分钟和秒。让我们以秒为例:

const seconds = Math.floor( (t/1000) % 60 );

让我们分解一下这里发生的事情。

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 将毫秒除以1000可转换为秒:(t/1000)

  3. 将总秒数除以60,然后取余数。你不需要所有的秒,只需要计算分钟数后剩下的那些:(t/1000) % 60

  4. 四舍五入到最接近的整数。这是因为你需要完整的秒数,而不是几分之一秒:Math.floor((t/1000)%60)

重复此逻辑,将毫秒转换为分钟,小时和天。

5.将时钟数据输出为可重复使用的对象

在准备好几天,几小时,几分钟和几秒钟之后,我们现在可以将数据作为可重复使用的对象返回:

return {   total,   days,   hours,   minutes,   seconds };

这个对象允许你调用你的函数,并获得任何计算值。这是如何获取剩余分钟数的示例:

getTimeRemaining(deadline).minutes

方便吧?

6.在页面上显示时钟,并在时钟为零时停止时钟

现在我们有了一个可以吐出剩余天数、小时、分钟和秒数的函数,我们就可以建立我们的时钟了。首先,我们将创建以下html元素来保存时钟:

<div id="clockdiv"></div>

然后,我们将编写一个函数,在新的div中输出时钟数据:

function initializeClock(id, endtime) {   const clock = document.getElementById(id);   const timeinterval = setInterval(() => {     const t = getTimeRemaining(endtime);     clock.innerHTML = 'days: ' + t.days + '<br>' +                       'hours: '+ t.hours + '<br>' +                       'minutes: ' + t.minutes + '<br>' +                       'seconds: ' + t.seconds;     if (t.total <= 0) {       clearInterval(timeinterval);     }   },1000); }

该函数有两个参数,这两个参数是包含时钟的元素的id,以及倒计时的结束时间。在函数内部,我们将声明一个 clock  变量,并使用它来保存对时钟容器div的引用。这意味着我们不必一直查询DOM。

接下来,我们将使用 setInterval 每秒执行一个匿名函数。此功能将执行以下操作:

  • 计算剩余时间。

  • 将剩余时间输出到我们的div。

  • 如果剩余时间为零停止计时。

此时,剩下的唯一步骤是像这样运行时钟:

initializeClock('clockdiv', deadline);

恭喜你!现在,你仅用18行JavaScript就拥有了一个基本时钟。

7.准备展示你的时钟

在设置时钟样式之前,我们需要进行一些改进。

  • 消除初始延迟,使你的时钟立即显示。

  • 让时钟脚本更有效率,这样它就不会连续重建整个时钟。

  • 根据需要添加前导零。

7.1 消除初始延迟

在时钟中,我们使用 setInterval  每秒更新一次显示。多数情况下,这很好,除非在开始时会有一秒钟的延迟。要消除此延迟,我们必须在间隔开始之前更新一次时钟。

让我们将传递给 setInterval 的匿名函数移到其自己的单独函数中,我们可以将此函数命名为 updateClock。在 setInterval  外调用一次 updateClock 函数,然后在 setInterval 内再次调用。

在你的JavaScript中,替换这个

const timeinterval = setInterval(() => { ... },1000);

新代码

function updateClock(){   const t = getTimeRemaining(endtime);   clock.innerHTML = 'days: ' + t.days + '<br>' +                     'hours: '+ t.hours + '<br>' +                     'minutes: ' + t.minutes + '<br>' +                     'seconds: ' + t.seconds;   if (t.total <= 0) {     clearInterval(timeinterval);   } }  updateClock(); // 首先运行一函数能以避免延迟 var timeinterval = setInterval(updateClock,1000);

7.2 避免不断重建时钟

我们需要使时钟脚本更高效,我们只想更新时钟中的数字,而不是每秒重建整个时钟。实现此目的的一种方法是将每个数字放在 span 标签内,并仅更新这些 span  的内容。

这是HTML:

<div id="clockdiv">     Days: <span class="days"></span><br>     Hours: <span class="hours"></span><br>     Minutes: <span class="minutes"></span><br>     Seconds: <span class="seconds"></span> </div>

现在让我们参考这些元素。在定义 clock 变量的位置之后添加以下代码

const daysSpan = clock.querySelector('.days'); const hoursSpan = clock.querySelector('.hours'); const minutesSpan = clock.querySelector('.minutes'); const secondsSpan = clock.querySelector('.seconds');

接下来,我们需要修改 updateClock 函数,使其只更新数字。新的代码是这样的:

function updateClock(){     const t = getTimeRemaining(endtime);      daysSpan.innerHTML = t.days;     hoursSpan.innerHTML = t.hours;     minutesSpan.innerHTML = t.minutes;     secondsSpan.innerHTML = t.seconds;      ... }

7.3 添加前导0

现在时钟不再每秒都在重建,我们还有另一件事要做:添加前导零。例如,不是让时钟显示7秒,而是显示07秒。一种简单的方法是在一个数的开头加上一串“0”,然后切掉最后两个数字。

例如,要在“seconds”值上添加前导零,你可以更改以下设置:

secondsSpan.innerHTML = t.seconds;

secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);

如果你愿意,你也可以在分钟和小时的前面加零。如果你已经走到这一步,恭喜你!你的时钟现在已经可以显示了。

8.更进一步

以下示例演示了如何为某些用例扩展时钟。它们都是基于上面的基本例子。

8.1 自动调节时钟

假设我们想让时钟在特定的日子出现,而不是在其他的日子。例如,我们可能有一系列事件即将发生,而不希望每次都手动更新时钟。以下是如何提前安排事情的方法。

通过在CSS中将其 display 属性设置为 none 来隐藏时钟,然后将以下内容添加到 initializeClock 函数中(以 var clock  开头的行之后)。这将导致只有在调用 initializeClock 函数后才会显示时钟:

clock.style.display = 'block';

接下来,我们可以指定显示时钟的日期。这将替换截止日期变量( deadline ):

const schedule = [     ['Jul 25 2015', 'Sept 20 2015'],     ['Sept 21 2015', 'Jul 25 2016'],     ['Jul 25 2016', 'Jul 25 2030'] ];

Schedule数组中的每个元素代表一个开始日期和一个结束日期。如上所述,它可以包含时间和时区,但我在这里使用了普通的日期,以保持代码的可读性。

最后,当用户加载页面时,我们需要检查是否在指定的时间范围内。此代码应替换先前对 initializeClock 函数的调用:

// 遍历schedule中的每个元素 schedule.forEach(([startDate, endDate]) => {   // 以毫秒为单位放置日期以便于比较   const startMs = Date.parse(startDate);   const endMs = Date.parse(endDate);   const currentMs = Date.parse(new Date());    // 如果当前日期在开始日期和结束日期之间,则显示时钟   if (endMs > currentMs && currentMs >= startMs ) {     initializeClock('clockdiv', endDate);   } });

现在,你可以提前安排你的时钟,而不必手动更新它。如果你愿意,你可以缩短代码。为了便于阅读,我把我的代码写得很啰嗦。

8.2 从用户到达起将计时器设置为10分钟

用户到达或开始特定任务后,有必要在给定的时间内设置倒计时。我们将在此处将计时器设置为10分钟,但是你可以使用任意时间。

我们需要做的就是用以下命令替换 deadline 变量:

const timeInMinutes = 10; const currentTime = Date.parse(new Date()); const deadline = new Date(currentTime + timeInMinutes*60*1000);

这段代码以当前时间为基准,增加10分钟。这些值将转换为毫秒,因此可以将它们加在一起并变成新的截止日期。

现在我们有一个时钟,从用户到达时开始倒计时十分钟,你可以自由发挥,尝试不同的时间长度。

8.3 跨页面保持时钟进度

有时,除了当前页面外,还需要保留时钟状态。如果我们想在整个网站上设置10分钟的计时器,则我们不希望在用户转到其他页面时重置该计时器。

一个解决方案是将时钟的结束时间保存在一个cookie中。这样一来,导航到一个新的页面就不会把结束时间重置到十分钟以后。

这是逻辑:

如果Cookie中记录了截止日期,使用该截止日期。

如果不存在Cookie,请设置一个新的截止日期并将其存储在Cookie中。

要实现这一点,请使用以下命令替换 deadline 变量:

let deadline;  // 如果有一个名为myClock的cookie,则使用该值作为截止日期 if(document.cookie && document.cookie.match('myClock')){   // 从Cookie获取截止日期值   deadline = document.cookie.match(/(^|;)myClock=([^;]+)/)[2]; } else {   // 否则,请设置从现在开始10分钟的截止日期,   // 将其保存在具有该名称的cookie中    // 创建从现在开始10分钟的截止日期   const timeInMinutes = 10;   const currentTime = Date.parse(new Date());   deadline = new Date(currentTime + timeInMinutes*60*1000);    // 将截止日期存储在cookie中以供将来引用   document.cookie = 'myClock=' + deadline + '; path=/; domain=.yourdomain.com'; }

需要注意的是,你需要将 .yourdomain.com 改为你的实际域名。

看完上述内容,你们掌握JavaScript中怎么构建一个倒数计时器的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网node.js频道,感谢各位的阅读!

--结束END--

本文标题: JavaScript中怎么构建一个倒数计时器

本文链接: https://lsjlt.com/news/69980.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript中怎么构建一个倒数计时器
    JavaScript中怎么构建一个倒数计时器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先,你需要设置一个有效的结束日期。这应该是Java...
    99+
    2024-04-02
  • JavaScript中怎么实现一个倒数计时器
    本篇文章给大家分享的是有关JavaScript中怎么实现一个倒数计时器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。有时,您将需要构建一个Ja...
    99+
    2024-04-02
  • 利用JavaScript创建一个兔年春节倒数计时器
    目录如何在 JavaScript 中构建倒数计时器第1步:创建倒计时输入框第2步:倒数计时器的基本结构第 3 步:使用 CSS 设计 JavaScript 定时器第四步:简单倒数计时...
    99+
    2023-01-06
    JavaScript兔年春节倒数计时器 JavaScript倒数计时器 JavaScript 计时器
  • 如何使用JavaScript创建一个兔年春节倒数计时器
    这篇文章主要介绍了如何使用JavaScript创建一个兔年春节倒数计时器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用JavaScript创建一个兔年春节倒数计时器文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-04
  • 使用javascript怎么实现一个定时器倒计时功能
    这期内容当中小编将会给大家带来有关使用javascript怎么实现一个定时器倒计时功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。<!DOCTYPE html><html&n...
    99+
    2023-06-14
  • javascript怎么让数字倒计时
    随着互联网的发展,倒计时功能在各种Web应用程序中得到了广泛的应用,比如节日倒计时、活动倒计时等等。在这些场合下,倒计时的时间显示非常重要,因此使用JavaScript实现数字倒计时成为了一个必不可少的技术。本文将为您介绍JavaScrip...
    99+
    2023-05-16
  • 怎么用javascript做一个距离某时间的倒计时
    今天小编给大家分享一下怎么用javascript做一个距离某时间的倒计时的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获...
    99+
    2024-04-02
  • JavaScript中怎么实现一个计时器
    这期内容当中小编将会给大家带来有关JavaScript中怎么实现一个计时器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。window.setInterval(); 这个方...
    99+
    2024-04-02
  • Android中怎么实现一个倒计时效果
    今天就跟大家聊聊有关Android中怎么实现一个倒计时效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。需求:a.在后台添加时,如果是今日直播,则需要添加开始时间(精确到秒);b.离...
    99+
    2023-05-30
    android
  • javascript怎么设置倒计时
    JavaScript设置倒计时倒计时是一种很有趣、实用的功能。在网站中,它可以用来提示用户某些重要事件的到来,比如发售时间、抢购时间等等。在本文中,我们将学习如何使用JavaScript设置倒计时。步骤1:获取当前时间获取当前时间是实现倒计...
    99+
    2023-05-14
  • python编写一个GUI倒计时器
    本文实例为大家分享了python实现GUI倒计时器的具体代码,供大家参考,具体内容如下 代码: import tkinter as tk from time import time...
    99+
    2024-04-02
  • 怎么在Android中实现一个倒计时功能
    本篇文章给大家分享的是有关怎么在Android中实现一个倒计时功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。以30分钟为例写的一个倒计时:public class Main...
    99+
    2023-05-31
    android roi %d
  • 用 PHP 创建倒数计时器
    在本文中,我们将介绍几种在 PHP 中创建倒数计时器的方法。我们可以仅使用 PHP 创建一个静态倒数计时器。要制作动态倒数计时器,我们将不得不使用 JavaScript。 在 PHP 中创建一个静...
    99+
    2024-02-27
  • 怎么使用HTML、css、javascript创建倒计时效果
    这篇文章将为大家详细讲解有关怎么使用HTML、css、javascript创建倒计时效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现倒计时效果的代码如下:<!...
    99+
    2024-04-02
  • React怎么实现一个倒计时hook组件
    这篇“React怎么实现一个倒计时hook组件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React怎么实现一个倒计时ho...
    99+
    2023-07-05
  • JavaScript中的canvas 实现一个圆环渐变倒计时效果
    目录前言1、效果图展示2、需求分析3、实现的技术4、实现的过程1. HTML 部分2. SASS部分3. JavaScript部分5、全部源码1.index.html2. style...
    99+
    2024-04-02
  • 怎么在Android应用中添加一个倒计时功能
    怎么在Android应用中添加一个倒计时功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。SweepView.java:public class SweepView ext...
    99+
    2023-05-31
    android roi
  • 使用vue怎么实现一个倒计时功能
    这期内容当中小编将会给大家带来有关使用vue怎么实现一个倒计时功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。通过父组件传入的结束时间减去当前日期得到剩余时间子组件部分<div clas...
    99+
    2023-06-14
  • 利用java怎么实现一个倒计时功能
    这期内容当中小编将会给大家带来有关利用java怎么实现一个倒计时功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:package timer;import java.util.Calendar;...
    99+
    2023-05-31
    java ava
  • 利用Java怎么编写一个倒计时功能
    利用Java怎么编写一个倒计时功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.简易方式实现 import java.util.*; import java...
    99+
    2023-05-31
    java ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作