2种简单的js倒计时方式

下面是“2种简单的js倒计时方式”的完整攻略,可以帮助网页作者快速实现倒计时功能。

1. 使用setInterval函数

原理

倒计时的原理基本上是每隔一段时间执行一次代码,去减小剩余的时间,并打印出更新后的倒计时。setInterval函数可以用来每隔指定的时间执行一段代码。

实现方法

首先,需要在html代码中定义一个显示倒计时的元素,例如:

<p id="timer">倒计时:00:00:00</p>

然后在js代码中使用setInterval函数每秒执行一次倒计时:

//设置倒计时截止时间,可以设置为任何未来的时间
const deadline="May 30 2022 10:00:00 GMT+0200";

function getTimeRemaining(endtime){

  //得到倒计时剩余时间的毫秒数
  const total = Date.parse(endtime) - Date.parse(new Date());

  //计算剩余时间的天、小时、分钟和秒数
  const days = Math.floor(total / (1000 * 60 * 60 * 24));
  const hours = Math.floor((total / (1000 * 60 * 60)) % 24);
  const minutes = Math.floor((total / 1000 / 60) % 60);
  const seconds = Math.floor((total / 1000) % 60);

  //返回计算结果
  return {
    total,
    days,
    hours,
    minutes,
    seconds
  };
}

function initializeClock(id, endtime){
  const clock = document.getElementById(id);
  const daysSpan = clock.querySelector('.days');
  const hoursSpan = clock.querySelector('.hours');
  const minutesSpan = clock.querySelector('.minutes');
  const secondsSpan = clock.querySelector('.seconds');

  function updateClock(){
    const t = getTimeRemaining(endtime);

    //将计算出来的时间更新到倒计时元素中
    daysSpan.innerHTML = t.days;
    hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
    minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
    secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);

    //判断倒计时是否结束,如果结束则清除计时器
    if (t.total <= 0) {
      clearInterval(timeinterval);
    }
  }

  //先执行一次更新,然后每隔1秒更新一次计时器
  updateClock();
  const timeinterval = setInterval(updateClock, 1000);
}

//通过初始化函数启动计时器并设置id和截止时间
initializeClock('timer', deadline);

这段代码可以实现一个简单的倒计时,每隔一秒自动更新,当倒计时结束时就会停止计时器,并在倒计时元素中显示“0:0:0”。

示例说明

按照上述代码实现后,可以在网页上看到如下倒计时效果:

倒计时示例

2. 使用setTimeout函数

原理

setTimeout函数与setInterval函数有些类似,都可以用来执行一段代码。不同的是,setTimeout函数只执行一次代码,并且需要设置一个时间参数告诉代码过多少时间后执行。

实现方法

与上述代码类似,需要在html代码中定义一个显示倒计时的元素,例如:

<p id="timer2">倒计时2:00:00:00</p>

然后在js代码中使用setTimeout函数执行倒计时:

const deadline2 = new Date("May 30, 2022 10:00:00").getTime();

function countdown() {
  const now = new Date().getTime();
  const distance = deadline2 - now;

  if (distance < 0) {
    clearInterval(timeinterval2);
    document.getElementById("timer2").innerHTML = "EXPIRED";
    return;
  }

  const days = Math.floor(distance / (1000 * 60 * 60 * 24));
  const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((distance % (1000 * 60)) / 1000);

  document.getElementById("timer2").innerHTML = days + "d " + hours + "h "
  + minutes + "m " + seconds + "s ";
}

const timeinterval2 = setInterval(countdown, 1000);

代码使用了一个countdown函数计算剩余时间并更新到倒计时元素中。在倒计时元素中当时间到0后,会显示“EXPIRED”。

示例说明

按照上述代码实现后,可以在网页上看到如下倒计时效果:

倒计时示例2

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:2种简单的js倒计时方式 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Easyui form combobox省市区三级联动

    Easyui form combobox省市区三级联动可以帮助用户快速选择省市区的信息,提供了良好的用户体验。下面我们来详细讲解该功能的完整攻略。 实现步骤 第一步:引入EasyUI资源文件和jQuery库文件 <link rel="stylesheet" type="text/css" href="h…

    JavaScript 2023年6月11日
    00
  • Ajax注册用户时实现表单验证

    下面是“Ajax注册用户时实现表单验证”的完整攻略。 一、什么是Ajax表单验证 Ajax(Asynchronous JavaScript And XML)即异步 JavaScript 和 XML,通俗来讲就是在不刷新页面、不跳转到其他页面的情况下,通过 JavaScript 发送异步请求获取数据,再动态更新页面内容。 在用户注册页面中,为了提高用户体验,我…

    JavaScript 2023年6月10日
    00
  • JS解析url参数为json对象问题

    将URL参数解析为JSON对象是JavaScript中的一项常见任务。在处理URL参数时,可以使用一些内置函数和库来使此任务变得简单。以下是一个完整的攻略,它将指导你如何使用不同的方法来解析URL参数为JSON对象: 方法一:使用URLSearchParams(推荐) URLSearchParams是在ES2015中引入的新的JavaScript API,在…

    JavaScript 2023年5月27日
    00
  • JSON格式的键盘编码对照表

    JSON格式的键盘编码对照表是一个基于JSON数据格式的简单工具,用于提供不同编码环境下的按键码对照表。这个工具的实用性很强,可以帮助开发者快速查询各种按键的编码,从而方便开发。下面我会提供详细的讲解和两个示例。 分析JSON格式的键盘编码对照表 JSON格式的键盘编码对照表的结构 这个工具的主要结构如下所示: { "keyCodes":…

    JavaScript 2023年5月19日
    00
  • js实现文件上传功能 后台使用MultipartFile

    当我们需要在网站中实现文件上传的功能时,可以使用JavaScript来实现前端的交互效果,同时后台使用Spring框架提供的MultipartFile类来处理文件上传。 具体实现步骤如下: 1.在前端HTML页面中,需要提供一个文件上传的表单,并且绑定一个JavaScript的事件,用来监听用户上传的文件。HTML代码示例: <form action=…

    JavaScript 2023年5月27日
    00
  • Javascript中的Split使用方法与技巧

    Javascript中的Split使用方法与技巧 Split函数是Javascript中的常用字符串处理函数,其作用是将一个字符串按照指定的分隔符分割为数组。这个函数在表单验证、信息提取、URL处理等方面都有广泛的应用。接下来,我们将详细讲解Javascript中的Split使用方法与技巧。 语法 split函数有一个基本的语法格式: stringObjec…

    JavaScript 2023年5月28日
    00
  • js 声明数组和向数组中添加对象变量的简单实例

    下面是关于JS声明数组和向数组中添加对象变量的简单实例的完整攻略。 一、JS声明数组 在JS中声明数组可以使用Array关键字或简单的方括号[]来完成,比如: // 使用Array关键字声明 let arr1 = new Array(); // 简单使用方括号声明 let arr2 = []; 以上两种声明方式是等价的。 二、向数组中添加对象变量 要向JS数…

    JavaScript 2023年5月27日
    00
  • JS实现的适合做faq或menu滑动效果示例

    JS实现FAQ和Menu滑动效果可以使用jQuery的库来实现,下面是详细的攻略: 创建HTML文件并引入jQuery库 若已有HTML文件则可以跳过此步骤。若无则需要创建一个HTML文件并在标签中引入jQuery库。可以使用以下代码: <!DOCTYPE html> <html> <head> <title>…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部