JS动态显示倒计时效果

yizhihongxing

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获取对象为null的解决方法

    当我们使用JavaScript在网页中操作DOM元素时,有时会遇到获取某个对象为null的情况,这种情况通常是由于DOM元素还未加载完成或者没有正确的选择器导致的,那么如何去解决这个问题呢? 1. 延迟加载JS代码 有时候我们的JS代码可能会在DOM元素没有完全加载完成时就执行了,导致获取对象为null,因此一个简单有效的解决方法就是延迟加载JS代码,等待D…

    JavaScript 2023年6月11日
    00
  • 详解ECMAScript6入门–Class对象

    以下是详解ECMAScript6入门–Class对象的完整攻略: ECMAScript6入门–Class对象 Class对象的概念 Class语法是ES6中一个新的语法,它提供了更加简洁、清晰的面向对象编程方式。Class本质上是一个语法糖,它的出现让原型继承的写法更加清晰易懂。 在ES6之前,继承只能通过原型链来进行实现,而这样的实现方式并不是很直观,…

    JavaScript 2023年5月27日
    00
  • 使用JS正则表达式 替换括号,尖括号等

    使用JS正则表达式替换括号、尖括号等的完整攻略分为以下几个步骤: 定义正则表达式 使用replace()函数替换匹配到的字符串 将替换后的字符串返回 下面是两个示例说明: 示例一 我们要将以下HTML代码中的所有尖括号<、>用[]代替 <div class="container"> <h1>Welcom…

    JavaScript 2023年6月10日
    00
  • flash javascript之间的通讯方法小结

    Flash JavaScript之间的通讯方法小结 在开发网络应用程序的过程中,我们常常需要使用Flash和JavaScript之间的通讯。下面是一些常见的通讯方法。 1. ExternalInterface ExternalInterface 类是Flash和JavaScript之间通讯的最基本的方法,它提供了一个双向的接口,可以在Flash和JavaSc…

    JavaScript 2023年6月11日
    00
  • c# 实现控件(ocx)中的事件详解

    下面是“c# 实现控件(ocx)中的事件详解”的完整攻略: 1. 什么是控件(ocx) 控件(ocx)是一种Microsoft公司开发的一种通用控件技术,主要应用于Windows操作系统中。它可以被嵌入到其他应用程序中,实现特定的功能,例如多媒体播放器、数据库控件等。控件(ocx)可以使用不同编程语言来开发,如C++、VB6、C#等。 2. 创建控件(ocx…

    JavaScript 2023年5月28日
    00
  • 分离式javascript取当前element值的代码

    下面是关于“分离式javascript取当前element值的代码”的攻略。 什么是分离式javascript 分离式javascript是网页开发中常用的一种技术,它将网页中的代码和行为分离开来,使得代码更易于维护和管理。一般来说,分离式javascript代码会以单独的.js文件的形式存放在服务器上,例如: <script src="js…

    JavaScript 2023年6月10日
    00
  • asp.net使用JS+form表单Post和Get方式提交数据

    接下来我将为您详细讲解“asp.net使用JS+form表单Post和Get方式提交数据”的完整攻略。ASP.NET 是一种基于 Web 的框架,它允许开发者使用各种编程语言(如 C#、Visual Basic、JavaScript 和 Python 等)来构建 Web 应用程序。ASP.NET 使用 HTML、CSS 和 JavaScript 技术实现 W…

    JavaScript 2023年6月10日
    00
  • 一种Javascript解释ajax返回的json的好方法(推荐)

    下面我会详细讲解一种 Javascript 解释 AJAX 返回的 JSON 的好方法。 一种 Javascript 解释 AJAX 返回的 JSON 的好方法(推荐) 什么是 AJAX AJAX,全称为 Asynchronous Javascript And Xml,即异步 JavaScript 和 XML。它是一种使用 XMLHttpRequest 对象…

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