js实现一个页面多个倒计时的3种方法

JS实现一个页面多个倒计时的3种方法

在一个网站中,可能会涉及到多个倒计时的展示,比如商品秒杀、优惠活动等。这时候,就需要实现一个页面中多个倒计时的效果。下面我们来介绍三种方式来实现这个功能。

方法一:使用setInterval()方法

setInterval()方法可以在指定的时间间隔(repeatTime)内,反复执行某个函数(fn)。我们可以利用setInterval()方法来实现多个倒计时。以下是一个示例代码:

// HTML
<div id="timer1"></div>
<div id="timer2"></div>

// JS
var targetTime1 = new Date("2022-01-01").getTime();
var targetTime2 = new Date("2022-02-01").getTime();

setInterval(function() {
    var nowTime = new Date().getTime();
    var diffTime1 = targetTime1 - nowTime;
    var minutes1 = Math.floor(diffTime1 / (1000 * 60));
    var seconds1 = Math.floor((diffTime1 % (1000 * 60)) / 1000);
    document.getElementById("timer1").innerHTML = minutes1 + ":" + seconds1;

    var diffTime2 = targetTime2 - nowTime;
    var minutes2 = Math.floor(diffTime2 / (1000 * 60));
    var seconds2 = Math.floor((diffTime2 % (1000 * 60)) / 1000);
    document.getElementById("timer2").innerHTML = minutes2 + ":" + seconds2;
}, 1000);

上面的代码中,我们根据两个倒计时的目标时间(targetTime1和targetTime2),计算出与当前时间的差值(diffTime1和diffTime2),并将秒数和分钟数分别展示在不同的div上。

方法二:使用setTimeout()方法

setTimeout()方法可以在指定的时间(delayTime)后,执行某个函数(fn)。通过不断地递归setTimeout()方法,我们可以实现一个类似于setInterval()的效果。以下是一个示例代码:

// HTML
<div id="timer1"></div>
<div id="timer2"></div>

// JS
var targetTime1 = new Date("2022-01-01").getTime();
var targetTime2 = new Date("2022-02-01").getTime();

function countdown1() {
    var nowTime = new Date().getTime();
    var diffTime = targetTime1 - nowTime;
    var minutes = Math.floor(diffTime / (1000 * 60));
    var seconds = Math.floor((diffTime % (1000 * 60)) / 1000);
    document.getElementById("timer1").innerHTML = minutes + ":" + seconds;

    if (diffTime < 0) {
        document.getElementById("timer1").innerHTML = "倒计时结束";
    } else {
        setTimeout(countdown1, 1000);
    }
}

function countdown2() {
    var nowTime = new Date().getTime();
    var diffTime = targetTime2 - nowTime;
    var minutes = Math.floor(diffTime / (1000 * 60));
    var seconds = Math.floor((diffTime % (1000 * 60)) / 1000);
    document.getElementById("timer2").innerHTML = minutes + ":" + seconds;

    if (diffTime < 0) {
        document.getElementById("timer2").innerHTML = "倒计时结束";
    } else {
        setTimeout(countdown2, 1000);
    }
}

countdown1();
countdown2();

上面的代码中,我们分别实现了两个倒计时函数(countdown1和countdown2),并通过递归setTimeout()方法,不断地调用这两个函数来实现倒计时效果。

方法三:封装倒计时组件

为了让代码更加整洁、简单,我们可以将倒计时的功能封装成一个组件。以下是一个示例代码:

// HTML
<div id="timer1"></div>
<div id="timer2"></div>

// JS
function Countdown(targetTime, element) {
    var self = this;
    this.targetTime = targetTime;
    this.element = element;

    this.timer = setInterval(function() {
        var nowTime = new Date().getTime();
        var diffTime = self.targetTime - nowTime;
        var minutes = Math.floor(diffTime / (1000 * 60));
        var seconds = Math.floor((diffTime % (1000 * 60)) / 1000);
        self.element.innerHTML = minutes + ":" + seconds;

        if (diffTime < 0) {
            self.element.innerHTML = "倒计时结束";
            clearInterval(self.timer);
        }
    }, 1000);
}

var timer1 = new Countdown(new Date("2022-01-01").getTime(), document.getElementById("timer1"));
var timer2 = new Countdown(new Date("2022-02-01").getTime(), document.getElementById("timer2"));

上面的代码中,我们封装了一个名为Countdown的组件,该组件可以接受目标时间(targetTime)和展示倒计时的元素(element)作为参数。通过封装组件,我们可以更加方便地实现多个倒计时的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现一个页面多个倒计时的3种方法 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • ajax结合mysql数据库和smarty实现局部数据状态的刷新方法

    实现ajax结合MySQL数据库和Smarty实现局部数据状态的刷新方法可以分为以下几个步骤: 在MySQL数据库中创建相关表格,包括存储数据的表格和用户表格(如果需要)。 在Smarty中设置模板文件,然后在Smarty配置文件中设置相关的选项,如目录、模板路径等等。 创建相应的PHP脚本,实现连接MySQL数据库,并通过SQL语句查询所需的数据。 在前端…

    JavaScript 2023年6月11日
    00
  • javascript抽象工厂模式详细说明

    当面对需要根据用户的选择生成不同的产品时,我们可以使用抽象工厂模式。JavaScript抽象工厂模式是一种用于创建一组相关对象的设计模式,也被称为工厂的工厂。在抽象工厂模式中,我们创建抽象类来指定一组方法来创建一组相关的对象。然后我们创建一个或多个工厂类实现这些抽象方法,并生成一组不同的对象。这使得我们可以将工厂对象集中在一个位置,使得更容易维护和测试。 实…

    JavaScript 2023年6月10日
    00
  • 如何判断元素是否为HTMLElement元素

    如果要判断一个元素是否为 HTMLElement 元素,我们可以使用 JavaScript 自带的 instanceof 方法。 示例 1:使用 instanceof 方法判断元素是否为 HTMLElement 元素 // 获取 HTML 元素 const el = document.querySelector(‘div’); // 判断元素是否为 HTML…

    JavaScript 2023年6月10日
    00
  • jquery控制listbox中项的移动并排序的实现代码

    要实现jquery控制listbox中项的移动并排序,需要以下几个步骤: 首先在HTML页面中创建两个列表框,这两个列表框分别是源列表框和目标列表框,即用户可以从源列表框中选择移动项目到目标列表框中。示例代码如下: <select id="sourceListBox" multiple> <option value=&q…

    JavaScript 2023年6月11日
    00
  • JS正则表达式替换url参数的方法

    下面我就来详细讲解JS正则表达式替换url参数的方法的攻略。 一、背景 在前端开发中,我们经常需要对url地址的参数进行替换、添加、删除等操作。而使用正则表达式可以让这些操作更加高效、灵活。下面就是如何使用JS正则表达式替换url参数的方法的详细步骤。 二、操作步骤 1. 获取URL地址 首先,我们需要获取URL地址,在JS中可以使用window.locat…

    JavaScript 2023年6月10日
    00
  • JavaScript高级程序设计 读书笔记之十一 内置对象Global

    JavaScript高级程序设计 读书笔记之十一 内置对象Global 什么是全局作用域 在JavaScript中,全局作用域是整个程序的最高层次。全局变量会成为全局作用域的属性,全局函数会成为全局作用域的方法。在全局作用域中定义的变量和函数,在整个程序范围内都是可用的。 Global对象简介 Global是JavaScript中的一个全局对象,它不是构造函…

    JavaScript 2023年5月27日
    00
  • javaScript字符串工具类StringUtils详解

    JavaScrip字符串工具类StringUtils详解 什么是StringUtils? StringUtils是一种JavaScript字符串操作工具类,它提供了一系列操作字符串的方法,方便我们在开发中对字符串进行处理。 使用方法 安装 可以使用npm进行安装,命令为: npm install string-utils 引入 需要在JavaScript代码…

    JavaScript 2023年5月28日
    00
  • JavaScript 链表定义与使用方法示例

    JavaScript 链表定义与使用方法示例攻略 链表是一种常用的数据结构,它由多个节点组成,每个节点包含一个值和指向下一个节点的指针。这篇文章将会详细介绍JavaScript中链表的定义方法以及常用的链表操作方法。 定义链表 在JavaScript中,我们可以使用对象来定义一个链表。一个链表节点可以用一个对象来描述,该对象至少应该包含一个值val和一个指向…

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