JS动态显示倒计时效果

JS动态显示倒计时效果是网页开发中经常使用的效果之一,具体可以分为以下几个步骤:

步骤一:HTML布局与样式

首先,我们需要在HTML中布置好倒计时的结构,通常是一个包含了时、分、秒的块级元素,例如:

<div id="countdown">
  <span id="hour"></span>:
  <span id="minute"></span>:
  <span id="second"></span>
</div>

接下来,我们为倒计时部分加上相应的CSS样式,使其在页面上能够美观地呈现出来,例如:

#countdown {
  font-size: 24px;
  font-weight: bold;
  text-align: center;
}

#countdown span {
  display: inline-block;
  width: 40px;
  height: 40px;
  background-color: #333;
  color: #fff;
  line-height: 40px;
  text-align: center;
  border-radius: 5px;
  margin-right: 10px;
}

步骤二:获取当前时间和目标时间

接下来,我们需要使用JavaScript获取当前时间和目标时间,以便计算倒计时的时间差。通常可以使用Date对象获取当前时间,同时在HTML中使用自定义属性来指定目标时间,例如:

<div id="countdown" data-target="2022-01-01 00:00:00">
  <span id="hour"></span>:
  <span id="minute"></span>:
  <span id="second"></span>
</div>
const now = new Date();
const target = new Date(document.getElementById('countdown').dataset.target);

步骤三:计算时间差和更新倒计时

接下来,我们需要计算出当前时间和目标时间的时间差,并使用定时器来每秒更新一次倒计时。我们可以使用以下代码来计算时间差,并更新HTML中的时、分、秒。

function updateCountdown() {
  const now = new Date();
  const target = new Date(document.getElementById('countdown').dataset.target);

  const diff = target - now;

  // 时间差转成时分秒
  const hours = Math.floor(diff / 1000 / 60 / 60);
  const minutes = Math.floor(diff / 1000 / 60) % 60;
  const seconds = Math.floor(diff / 1000) % 60;

  // 更新HTML中的时、分、秒
  document.getElementById('hour').textContent = String(hours).padStart(2, '0');
  document.getElementById('minute').textContent = String(minutes).padStart(2, '0');
  document.getElementById('second').textContent = String(seconds).padStart(2, '0');
}

// 每秒更新一次倒计时
setInterval(updateCountdown, 1000);

示例

下面是两个示例来展示该效果的具体实现过程。

示例一:普通的倒计时效果

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>JS动态倒计时效果</title>
    <style>
      #countdown {
        font-size: 24px;
        font-weight: bold;
        text-align: center;
      }

      #countdown span {
        display: inline-block;
        width: 40px;
        height: 40px;
        background-color: #333;
        color: #fff;
        line-height: 40px;
        text-align: center;
        border-radius: 5px;
        margin-right: 10px;
      }
    </style>
  </head>
  <body>
    <div id="countdown" data-target="2022-01-01 00:00:00">
      <span id="hour"></span>:
      <span id="minute"></span>:
      <span id="second"></span>
    </div>
    <script>
      function updateCountdown() {
        const now = new Date();
        const target = new Date(document.getElementById('countdown').dataset.target);

        const diff = target - now;

        // 时间差转成时分秒
        const hours = Math.floor(diff / 1000 / 60 / 60);
        const minutes = Math.floor(diff / 1000 / 60) % 60;
        const seconds = Math.floor(diff / 1000) % 60;

        // 更新HTML中的时、分、秒
        document.getElementById('hour').textContent = String(hours).padStart(2, '0');
        document.getElementById('minute').textContent = String(minutes).padStart(2, '0');
        document.getElementById('second').textContent = String(seconds).padStart(2, '0');
      }

      // 每秒更新一次倒计时
      setInterval(updateCountdown, 1000);
    </script>
  </body>
</html>

示例二:带有过期提示的倒计时效果

在某些场合下,我们可能需要在倒计时到达时停止倒计时,同时给出一个过期提示。可以在updateCountdown函数中使用以下代码,来实现这一效果。

function updateCountdown() {
  const now = new Date();
  const target = new Date(document.getElementById('countdown').dataset.target);

  const diff = target - now;

  if (diff < 0) {
    // 倒计时结束,停止定时器
    clearInterval(countdownInterval);

    // 显示过期提示
    document.getElementById('countdown').textContent = '倒计时已结束!';
  } else {
    // 时间差转成时分秒
    const hours = Math.floor(diff / 1000 / 60 / 60);
    const minutes = Math.floor(diff / 1000 / 60) % 60;
    const seconds = Math.floor(diff / 1000) % 60;

    // 更新HTML中的时、分、秒
    document.getElementById('hour').textContent = String(hours).padStart(2, '0');
    document.getElementById('minute').textContent = String(minutes).padStart(2, '0');
    document.getElementById('second').textContent = String(seconds).padStart(2, '0');
  }
}

// 每秒更新一次倒计时
const countdownInterval = setInterval(updateCountdown, 1000);

在HTML中使用与示例一相同的结构,这里不再赘述。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS动态显示倒计时效果 - Python技术站

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

相关文章

  • js 删除数组的几种方法小结

    当需要从Javascript数组中删除元素时,有多种可供选择的方法。本文将介绍几种最为常见的、实用的Javascript删除数组元素的方法。 slice方法 slice()方法接受两个整数参数,用于指定要删除的元素的起始和结束位置。该方法返回含删除元素的新数组。 let arr = ["apple", "banana"…

    JavaScript 2023年5月27日
    00
  • JavaScript高级程序设计(第3版)学习笔记9 js函数(下)

    《JavaScript高级程序设计(第3版)学习笔记9 js函数(下)》一文主要讲解了 JavaScript 中函数的进阶应用,包括函数作为对象、闭包、函数自执行等内容,下面是具体的攻略: 1. 函数作为对象 在 JavaScript 中,函数同时也是对象,因此它们可以拥有属性和方法。函数的属性通常是直接在函数对象上定义,而方法则是定义在函数的原型对象上。 …

    JavaScript 2023年5月18日
    00
  • js与jquery正则验证电子邮箱、手机号、邮政编码的方法

    作为网站的作者,为了保证用户提交的数据有效和安全,我们需要对输入的电子邮箱、手机号和邮政编码进行正则验证。JavaScript和jQuery都可以进行正则验证,下面是针对这三种常见输入的完整攻略: 1. 电子邮箱验证 正则表达式 电子邮箱的验证需要用到正则表达式,下面是一个常用的正则表达式: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-]…

    JavaScript 2023年6月1日
    00
  • JavaScript 类的定义和引用 JavaScript高级培训 自定义对象

    本文将详细讲解如何定义和引用 JavaScript 类,以及如何创建自定义对象。 JavaScript 类的定义和引用 在 JavaScript 中,类可以通过关键字 class 来定义。类的构造函数中可以包含属性和方法,而实例则是使用 new 关键字来创建的。 下面是一个简单的类定义示例: class Person { constructor(name, …

    JavaScript 2023年5月27日
    00
  • JavaScript中的console.time()函数详细介绍

    下面是关于JavaScript中的console.time()函数的详细介绍: 简介 console.time()函数可以帮助我们计算代码的执行时间。通常用于优化代码,或者进行一些性能测试等等。 语法 console.time()函数的语法如下: console.time(name); 参数name是一个字符串,用于标记计时器。 使用方法 使用console…

    JavaScript 2023年5月27日
    00
  • JavaScript编码小技巧分享

    JavaScript编码小技巧分享 概述 JavaScript是一门常用的脚本编程语言,用于网页前端开发。面对日益复杂的开发需求,编写高效、稳定、易于维护的JavaScript代码显得尤为重要。本文将分享一些实用的JavaScript编码小技巧,帮助你提高开发效率、提升代码质量。 小技巧一:避免使用全局变量 在JavaScript中,全局变量具有全局作用域,…

    JavaScript 2023年5月20日
    00
  • 利用jquery制作滚动到指定位置触发动画

    介绍 利用jQuery制作“滚动到指定位置触发动画”可以为网站增添一份优雅。本攻略将介绍如何利用jQuery添加让元素滚动到指定位置时触发动画的代码。 步骤 步骤 1:添加jQuery链接 首先需要在 HTML 文件中添加 jQuery 链接。这里我们使用的是来自 jQuery 官网的链接: <script src="https://code…

    JavaScript 2023年6月11日
    00
  • JS中async/await实现异步调用的方法

    那么我们来详细讲解下JS中async/await实现异步调用的方法。 使用场景 在JS中,异步调用是很常见的需求。异步调用通常指的是请求服务器数据、操作浏览器本地存储、读取文件等这样一些会长时间阻塞JS的操作。这些操作通常要用到回调函数处理异步操作结果。而使用async/await可以让异步操作更加简单、直观,避免了回调地狱的问题。 Async/await工…

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