JS秒杀倒计时功能完整实例【使用jQuery3.1.1】

JS秒杀倒计时功能是电商网站等常用的功能之一,本文将详细讲解如何进行实现,以及使用jQuery3.1.1优化过程。

步骤一:HTML代码

首先,我们需要将倒计时模块添加到HTML中,代码如下:

<div id="countdown">
    <span class="days"></span> 天 
    <span class="hours"></span> 时 
    <span class="minutes"></span> 分 
    <span class="seconds"></span> 秒
</div>

步骤二:JS代码

接下来,我们需要编写JS代码实现倒计时功能。先定义倒计时时间戳,以秒为单位,如:

var endTime = new Date('2022/01/01 00:00:00').getTime();

接着,我们需要编写一个计时器函数来更新倒计时模块中的时间数。计时器函数的主要逻辑如下:

function countdown() {
    var nowTime = new Date().getTime(),
        timeLeft = endTime - nowTime;
    if (timeLeft < 0) {
        // 倒计时结束
        $('#countdown').html('已结束');
        clearInterval(countdownTimer);
        return;
    }
    var days = Math.floor(timeLeft / (1000 * 60 * 60 * 24)),
        hours = Math.floor((timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
        minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60)),
        seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);
    $('#countdown .days').text(days);
    $('#countdown .hours').text(hours);
    $('#countdown .minutes').text(minutes);
    $('#countdown .seconds').text(seconds);
}

在以上的代码中,我们首先计算当前时间与倒计时结束时间的时间差,并根据时间差计算出剩余天、小时、分钟和秒数。然后,分别将这些数值添加到对应的HTML元素中。

最后,通过setInterval函数调用计时器函数来实现倒计时功能,具体代码如下:

var countdownTimer = setInterval(countdown, 1000);

步骤三:使用jQuery3.1.1进行优化

为了使倒计时功能更加可靠和稳定,我们可以使用jQuery3.1.1对计时器函数进行进一步优化。具体操作如下:

  1. 将对时间戳的计算转化为jQuery对象的data()方法操作,避免了一些判断和计算上的错误。
function countdown() {
    var $countdown = $('#countdown'),
        endTime = new Date('2022/01/01 00:00:00').getTime(),
        timeLeft = endTime - new Date().getTime();
    if (timeLeft < 0) {
        // 倒计时结束
        $countdown.html('已结束');
        clearInterval(countdownTimer);
        return;
    }
    var days = Math.floor(timeLeft / (1000 * 60 * 60 * 24)),
        hours = Math.floor((timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
        minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60)),
        seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);
    $countdown.find('.days').text(days).data('days', days);
    $countdown.find('.hours').text(hours).data('hours', hours);
    $countdown.find('.minutes').text(minutes).data('minutes', minutes);
    $countdown.find('.seconds').text(seconds).data('seconds', seconds);
}
  1. 使用data()方法来获取对应元素的数值,不用再对DOM元素进行计算,避免了一次使用Math.floor()函数。
function countdown() {
    var $countdown = $('#countdown'),
        endTime = new Date('2022/01/01 00:00:00').getTime(),
        timeLeft = endTime - new Date().getTime();
    if (timeLeft < 0) {
        // 倒计时结束
        $countdown.html('已结束');
        clearInterval(countdownTimer);
        return;
    }
    var daysLeft = $countdown.find('.days').data('days'),
        hoursLeft = $countdown.find('.hours').data('hours'),
        minutesLeft = $countdown.find('.minutes').data('minutes'),
        secondsLeft = $countdown.find('.seconds').data('seconds');
    if (secondsLeft > 0) {
        secondsLeft--;
    } else {
        secondsLeft = 59;
        if (minutesLeft > 0) {
            minutesLeft--;
        } else {
            minutesLeft = 59;
            if (hoursLeft > 0) {
                hoursLeft--;
            } else {
                hoursLeft = 23;
                if (daysLeft > 0) {
                    daysLeft--;
                } else {
                    // 倒计时结束
                    $countdown.html('已结束');
                    clearInterval(countdownTimer);
                    return;
                }
            }
        }
    }
    $countdown.find('.days').text(daysLeft).data('days', daysLeft);
    $countdown.find('.hours').text(hoursLeft).data('hours', hoursLeft);
    $countdown.find('.minutes').text(minutesLeft).data('minutes', minutesLeft);
    $countdown.find('.seconds').text(secondsLeft).data('seconds', secondsLeft);
}

以上两条优化让计时器函数的性能更好,倒计时的稳定性也更高了。

示例说明:

假设我们需要在2021年11月11日 23:59:59之前完成活动,那么倒计时模块的HTML代码如下:

<div id="countdown">
    <span class="days"></span> 天 
    <span class="hours"></span> 时 
    <span class="minutes"></span> 分 
    <span class="seconds"></span> 秒
</div>

JS代码如下:

(function() {
    var $countdown = $('#countdown');
    var endTime = new Date('2021/11/11 23:59:59').getTime();
    function countdown() {
        var nowTime = new Date().getTime(),
            timeLeft = endTime - nowTime;
        if (timeLeft < 0) {
            // 倒计时结束
            $countdown.html('已结束');
            clearInterval(countdownTimer);
            return;
        }
        var days = Math.floor(timeLeft / (1000 * 60 * 60 * 24)),
            hours = Math.floor((timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
            minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60)),
            seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);
        $('#countdown .days').text(days);
        $('#countdown .hours').text(hours);
        $('#countdown .minutes').text(minutes);
        $('#countdown .seconds').text(seconds);
    }
    var countdownTimer = setInterval(countdown, 1000);
})();

这个示例中的倒计时模块的倒计时时间为2019年12月12日 00:00:00。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS秒杀倒计时功能完整实例【使用jQuery3.1.1】 - Python技术站

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

相关文章

  • jQuery 2.0.3 源码分析之core(一)整体架构

    “jQuery 2.0.3 源码分析之core(一)整体架构”是介绍jQuery 2.0.3版本核心代码的一篇文章。读者可以通过此文章了解到jQuery整体架构设计思路以及各个模块的用法。 文章的大纲分为以下几个部分: 整体架构 开发约定 核心函数 工具函数和数组函数 数据缓存系统 队列和运动函数 选择器引擎 下面,我们来详细介绍这篇文章: 整体架构 文章首…

    jquery 2023年5月28日
    00
  • 关于页面加载即执行JQuery的三种方法小结

    下面我将详细讲解“关于页面加载即执行JQuery的三种方法小结”的完整攻略。 1. 为什么需要在页面加载时立即执行jQuery? 在开发网页时,经常需要使用jQuery库来操作DOM元素、处理事件等。但是,如果在使用jQuery库之前没有先加载它的话,相关的代码将无法正常运行。在很多情况下,我们希望页面加载时就能够执行部分jQuery代码,以增强页面的交互性…

    jquery 2023年5月28日
    00
  • jQWidgets jqxInput items 属性

    jQWidgets jqxInput items 属性攻略 简介 jQWidgets 是一个基于 jQuery 的 UI 组件库,提供丰富的 UI 组件和工具用于创建现代化应用程序。jqxInput 组件用于创建一个文本输入框。本攻略详细介绍 jqxInput 组件 items 属性,包括如何使用和示例说明。 使用 jqxInput 组件的 items 属性…

    jquery 2023年5月10日
    00
  • jQWidgets jqxFileUpload高度属性

    jQWidgets jqxFileUpload高度属性 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件和工具包表格等。jqxFileUpload是jWidgets的一个组件,用于实现上传功能。height是jqxFileUpload的一个属性,用于设置组件的高度。本文将详细介绍height属性,并提供两个示例。 height属性的基…

    jquery 2023年5月9日
    00
  • jQWidgets jqxButton toggle()方法

    jQWidgets jqxButton toggle()方法详解 jQWidgets是一个基于jQuery的UI组件库,提供了丰富UI组件工具包。jqxButton是其中之一。本文将细介绍jqxButton的toggle()方法,包括定义、语法和示例。 toggle()方法的定义 jqxButton的toggle()方法用于切换按钮的状态。当按钮处于激活状态…

    jquery 2023年5月10日
    00
  • jQuery UI Droppable activate事件

    当使用jQuery UI Droppable时,可以为其绑定多个事件,其中之一是activate事件。在本文中,我们将详细介绍activate事件的作用,以及如何使用它。 activate事件的作用 当拖动一个可拖动元素并将其悬停在一个设置了Droppable的元素上时,activate事件将被触发。在此事件中,您可以执行设定的函数,从而影响悬停时元素的样式…

    jquery 2023年5月12日
    00
  • jQWidgets jqxDateTimeInput placeHolder属性

    以下是关于“jQWidgets jqxDateTimeInput placeHolder属性”的完整攻略,包含两个示例说明: 属性简介 jqxDateTimeInput 控件的 placeHolder 属性用于设置日期时间输入框的占位符本。该属性的语法如下: $("#jqxDateTimeInput").jqxDateTimeInput(…

    jquery 2023年5月10日
    00
  • jQuery UI Selectable disabled选项

    以下是关于 jQuery UI Selectable disabled 选项的详细攻略: jQuery UI Selectable disabled 选项 disabled 选项是 jQuery UI Selectable 中的一个选项,用于指定是否禁用选择功能。当 disabled 选项设置为 true 时选择功能将被禁用。当 disabled 选项设置为…

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