JS基于递归实现倒计时效果的方法

yizhihongxing

当我们需要倒计时的效果时,JS基于递归实现倒计时就是一种很不错的方案了。接下来我将为大家讲解如何使用JS实现基于递归的倒计时效果。

步骤一:准备样式

通过CSS设置我们的倒计时样式,使页面表现更加美观。这里我们假设我们的倒计时样式类名为 countdown

.countdown {
    font-size: 24px;
    color: #666;
}

步骤二:编写 HTML

在页面上添加我们的倒计时容器元素。这里我们使用一个 div 元素,并将其类名设置为 countdown

<div class="countdown"></div>

步骤三:编写 JavaScript

接下来就开始编写我们的递归倒计时代码了。

首先,我们声明一个倒计时函数,该函数将接受一个整型参数 time,表示倒计时总秒数,然后在每次调用时减少该参数的值,直到倒计时结束。每次递归调用函数,我们都会将剩余秒数减 1,并调用 setTimeout 函数来设置下一次递归的调用。

function countdown(time) {
    // 获取倒计时容器元素
    var countdownEl = document.querySelector('.countdown');

    // 如果剩余时间小于等于 0,则停止倒计时,显示时间到了的提示
    if (time <= 0) {
        countdownEl.textContent = '时间到了!';
        return;
    }

    // 获取小时、分钟、秒数
    var hours = Math.floor(time / 3600);
    var minutes = Math.floor((time % 3600) / 60);
    var seconds = time % 60;

    // 格式化时间
    var timeStr = zeroPadding(hours) + ':' + zeroPadding(minutes) + ':' + zeroPadding(seconds);

    // 更新倒计时容器元素的内容
    countdownEl.textContent = timeStr;

    // 设置 1000 毫秒后再次调用倒计时函数
    setTimeout(function() {
        countdown(--time);
    }, 1000);
}

在这里,我们采用了一个名为 zeroPadding 的辅助函数,用来确保在最终格式化的时间字符串中,任何数字都至少保留两位。

function zeroPadding(num) {
    return ('0' + num).slice(-2);
}

步骤四:调用倒计时函数

最后,我们只需要在页面加载完毕后,调用 countdown 函数,传入所需倒计时的总秒数即可。

window.onload = function() {
    countdown(60);
};

示例

以下是一个基于递归实现倒计时效果的简单示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>JS基于递归实现倒计时效果的方法</title>
    <style>
        .countdown {
            font-size: 24px;
            color: #666;
        }
    </style>
</head>
<body>
    <div class="countdown"></div>
    <script>
        function countdown(time) {
            var countdownEl = document.querySelector('.countdown');

            if (time <= 0) {
                countdownEl.textContent = '时间到了!';
                return;
            }

            var hours = Math.floor(time / 3600);
            var minutes = Math.floor((time % 3600) / 60);
            var seconds = time % 60;

            var timeStr = zeroPadding(hours) + ':' + zeroPadding(minutes) + ':' + zeroPadding(seconds);

            countdownEl.textContent = timeStr;

            setTimeout(function() {
                countdown(--time);
            }, 1000);
        }

        function zeroPadding(num) {
            return ('0' + num).slice(-2);
        }

        window.onload = function() {
            countdown(60);
        };
    </script>
</body>
</html>

上面的代码中,我们将倒计时设置为 60 秒。每次递归调用 countdown 函数,我们都会将剩余秒数减 1 并重新设置 setTimeout,从而实现动态倒计时效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS基于递归实现倒计时效果的方法 - Python技术站

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

相关文章

  • VUE3+TS递归组件实现TreeList设计实例详解

    让我详细讲解一下“VUE3+TS递归组件实现TreeList设计实例详解”的完整攻略。 1. TreeList设计概述 TreeList 是一种常见的树状结构列表,它通常用于展示带有层级关系的数据,比如公司部门结构。本文将详细介绍如何使用 VUE3 和 TypeScript 实现一个高效的递归组件,来实现 TreeList 设计。 2. 实现步骤 2.1 V…

    Vue 2023年5月29日
    00
  • Vue3+Vite使用双token实现无感刷新

    下面我将详细讲解“Vue3+Vite使用双token实现无感刷新”的完整攻略。 什么是双token实现无感刷新? 双token是指前后端各自维护一个token,前端在请求后端接口时需要在请求头中携带两个token,一个是用户信息token,另一个是操作token,后端通过判断这两个token的有效性,来决定是否需要重新登录,从而达到无感知的更新token的目…

    Vue 2023年5月28日
    00
  • 基于vue实现图片验证码倒计时60s功能

    要实现基于vue的图片验证码倒计时功能,我们可以按照以下步骤进行操作: 安装必要的依赖 首先,我们需要安装以下依赖: vue:用于构建用户界面的渐进式框架 vue-resource:用于发送http请求 vue-countdown:用于实现倒计时功能 可以使用以下命令进行依赖安装: npm install vue vue-resource vue-count…

    Vue 2023年5月29日
    00
  • vue 虚拟DOM的原理

    Vue 虚拟 DOM 的原理 什么是虚拟 DOM 虚拟 DOM 是 React 和 Vue 等一些框架用于提高性能和开发效率的一种技术手段。虚拟 DOM 是一个以 JavaScript 对象为基础的轻量的 DOM 形式,它可以高效地描述整个页面的结构以及每个节点的属性,而不管是首次渲染还是更新操作,都是与虚拟 DOM 进行比对,然后再将差异更新到页面上。使用…

    Vue 2023年5月27日
    00
  • 尤大大新活petite-vue的实现

    首先,需要说明的是,Petite Vue是Vue的一个迷你版本,它依赖Vue 3,并且只有5KB的大小。它是为了在代码质量和性能之间找到一个理想的平衡点,以便开发者可以轻松编写高质量的代码并快速创建精美的交互效果。 Petite Vue使用与Vue 3相同的选项API,但是与Vue相比,它有一些不同之处,例如没有Virtual DOM和响应式系统的支持。在本…

    Vue 2023年5月28日
    00
  • Vue图片裁剪功能实现代码

    下面是详细讲解 Vue 图片裁剪功能实现代码的完整攻略。 1. 安装组件库 首先,我们需要使用第三方组件库来实现图片裁剪的功能。比较常用的有 Vue-Cropper 和 vue-clip。这里以 Vue-Cropper 为例,在命令行中输入以下代码进行安装: npm install vue-cropper 2. 导入依赖 安装完 Vue-Cropper 后,…

    Vue 2023年5月28日
    00
  • vue.js实现只能输入数字的输入框

    实现只能输入数字的输入框可以通过如下步骤来完成: 步骤一:定义只允许输入数字的指令 在Vue.js中,我们可以通过定义指令来限制输入框的输入内容。下面是一个自定义的v-only-number指令,它可以确保输入框只接受数字: <template> <div> <input v-only-number type="tex…

    Vue 2023年5月27日
    00
  • vue实现点击按钮下载文件功能

    以下是详细讲解“vue实现点击按钮下载文件功能”的完整攻略: 1. 准备工作 在实现点击按钮下载文件功能之前,我们需要先完成以下准备工作: 1.1 确定下载文件的文件路径 要下载的文件必须事先确定好其文件路径。在Vue项目中一般会将需要下载的文件放在public目录下,因为这些文件可以直接被访问。 1.2 安装file-saver库 在Vue项目中,文件下载…

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