JS自动倒计时30秒后按钮才可用(两种场景)

当我们需要用户在规定时间内完成某些操作,而不希望用户在规定时间之前提交多次请求时,可以使用JS自动倒计时,以此限制用户在规定时间之前不能再触发该操作。

以下是JS自动倒计时的完整攻略,包含两种场景的具体实现方法。

场景一:按钮点击后30秒后才可再次触发

HTML代码

首先,我们需要在HTML代码中创建一个按钮,例如以下代码:

<button id="myButton" onclick="buttonClick()">点击我</button>

JavaScript代码

然后,我们需要编写JavaScript代码,实现倒计时的功能。具体的实现步骤如下:

  1. 获取按钮的引用,和倒计时的时长。我们可以使用document.getElementById方法获取按钮的引用,使用一个变量来保存倒计时的时长,例如:
var myButton = document.getElementById("myButton");
var countDown = 30; // 倒计时时长为30秒
  1. 定义一个计时器,每秒减少一秒。我们可以使用setInterval方法每秒钟执行一次计时器函数,该函数可以将倒计时的时长减1,然后更新按钮的文本内容,例如:
var intervalId;
function startCountDown() {
  intervalId = setInterval(function(){
    countDown--;
    myButton.innerHTML = "还需等待" + countDown + "秒";
  }, 1000);
}

在上面的代码中,setInterval方法每秒钟执行一次匿名函数,该匿名函数的作用是将countDown减1,然后将更新后的计时器文本设置为按钮的文本内容。最后,返回一个intervalId值,该值用于停止计时器。

  1. 开始计时器。当按钮被点击后,需要先调用startCountDown函数,启动计时器。同时,需要将按钮设置为禁用状态,禁止用户多次点击,例如:
function buttonClick() {
  startCountDown(); // 启动计时器
  myButton.disabled = true; // 禁用按钮
}

在上面的代码中,当按钮被点击时,先调用startCountDown函数启动计时器,然后禁用按钮,禁止用户多次点击。

  1. 停止计时器。当倒计时结束后,需要停止计时器,并将按钮恢复为可使用状态,例如:
function stopCountDown() {
  clearInterval(intervalId);
  myButton.disabled = false; // 恢复按钮为可使用状态
  myButton.innerHTML = "点击我"; // 恢复按钮文本
}

在上面的代码中,当倒计时结束时,先调用clearInterval方法停止计时器,然后将按钮恢复为可使用状态,并恢复按钮的文本内容。

  1. 完整代码
var myButton = document.getElementById("myButton");
var countDown = 30; // 倒计时时长为30秒
var intervalId;

function startCountDown() {
  intervalId = setInterval(function(){
    countDown--;
    myButton.innerHTML = "还需等待" + countDown + "秒";
  }, 1000);
}

function buttonClick() {
  startCountDown(); // 启动计时器
  myButton.disabled = true; // 禁用按钮
}

function stopCountDown() {
  clearInterval(intervalId);
  myButton.disabled = false; // 恢复按钮为可使用状态
  myButton.innerHTML = "点击我"; // 恢复按钮文本
}

场景二:用户登录后30分钟内操作有效

JavaScript代码

在这种情况下,我们需要在用户登录后的30分钟内限制用户的操作,同样可以使用JS实现自动倒计时的功能。具体的实现步骤如下:

  1. 获取当前的时间和倒计时的时长。我们可以使用new Date()方法获取当前的时间,使用一个变量来保存倒计时的时长,例如:
var startTime = new Date();
var countDown = 1800; // 倒计时时长为30分钟
  1. 定义一个计时器,每秒减少一秒。与场景一类似,我们可以使用setInterval方法每秒钟执行一次计时器函数,该函数可以将倒计时的时长减1,然后更新页面上的倒计时文本内容,例如:
var intervalId;
function startCountDown() {
  intervalId = setInterval(function(){
    countDown--;
    updateCountDown();
  }, 1000);
}

在上面的代码中,setInterval方法每秒钟执行一次匿名函数,该匿名函数的作用是将countDown减1,然后调用updateCountDown函数更新倒计时文本内容。

  1. 计算剩余的倒计时。我们需要通过当前时间和localStorage中保存的登录时间,计算剩余的倒计时,例如:
function getRemainingTime() {
  var endTime = new Date();
  var elapsedTime = Math.floor((endTime - startTime) / 1000);
  return Math.max(countDown - elapsedTime, 0);
}

在上面的代码中,new Date()方法获取当前时间,然后使用(endTime - startTime) / 1000计算已经过去的时间(单位为秒),最后用倒计时时长减去已经过去的时间,计算剩余的倒计时时间。

  1. 更新倒计时文本内容。根据剩余的倒计时时间,我们需要动态地更新页面上的倒计时显示文本内容,例如:
function updateCountDown() {
  var remainingTime = getRemainingTime();
  var minutes = Math.floor(remainingTime / 60);
  var seconds = remainingTime % 60;
  document.getElementById("countDown").innerHTML = "您的操作将在" + minutes + "分" + seconds + "秒后失效";
}

在上面的代码中,getRemainingTime函数获取剩余的倒计时时间,然后将剩余时间格式化为“分:秒”的形式,更新页面上的倒计时文本内容。

  1. 开始计时器。当用户登录时,我们需要调用startCountDown函数启动计时器。同时,需要将倒计时文本内容添加到页面上,例如:
function login() {
  startTime = new Date();
  updateCountDown();
  document.getElementById("countDownContainer").style.display = "block"; // 显示倒计时容器
  startCountDown();
}

在上面的代码中,当用户登录成功后,调用login函数,启动计时器并更新倒计时文本内容,最后将倒计时容器设置为可见状态。

  1. 停止计时器。当倒计时结束后,我们需要将倒计时容器隐藏,停止计时器并进行其他操作(例如,禁止用户做某些操作),例如:
function stopCountDown() {
  clearInterval(intervalId);
  document.getElementById("countDownContainer").style.display = "none"; // 隐藏倒计时容器
  // TODO: 禁止用户进行某些操作
}

在上面的代码中,当倒计时结束时,停止计时器,并将倒计时容器设置为隐藏状态,最后可以禁止用户进行某些操作。

  1. 完整代码
var startTime = new Date();
var countDown = 1800; // 倒计时时长为30分钟
var intervalId;

function startCountDown() {
  intervalId = setInterval(function(){
    countDown--;
    updateCountDown();
  }, 1000);
}

function getRemainingTime() {
  var endTime = new Date();
  var elapsedTime = Math.floor((endTime - startTime) / 1000);
  return Math.max(countDown - elapsedTime, 0);
}

function updateCountDown() {
  var remainingTime = getRemainingTime();
  var minutes = Math.floor(remainingTime / 60);
  var seconds = remainingTime % 60;
  document.getElementById("countDown").innerHTML = "您的操作将在" + minutes + "分" + seconds + "秒后失效";
}

function login() {
  startTime = new Date();
  updateCountDown();
  document.getElementById("countDownContainer").style.display = "block"; // 显示倒计时容器
  startCountDown();
}

function stopCountDown() {
  clearInterval(intervalId);
  document.getElementById("countDownContainer").style.display = "none"; // 隐藏倒计时容器
  // TODO: 禁止用户进行某些操作
}

以上就是JS自动倒计时的实现方式和完整攻略,适用于在一定时间内限制用户的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS自动倒计时30秒后按钮才可用(两种场景) - Python技术站

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

相关文章

  • 一行代码告别document.getElementById

    下面是“一行代码告别document.getElementById”的完整攻略: 1. document.querySelector方法说明 document.querySelector 方法用于获取文档中匹配指定选择器的第一个元素。这个方法返回的是一个元素节点对象,如果没有匹配到元素则返回null。 语法: element = document.query…

    JavaScript 2023年6月10日
    00
  • 基于JS组件实现拖动滑块验证功能(代码分享)

    基于JS组件实现拖动滑块验证功能的攻略如下: 1. 需求分析 首先需要了解业务需求和实现方式,即用户需要通过拖动滑块来完成验证。可以使用JS组件来实现这个功能。 2. 准备工作 在实现之前,需要准备一个简单的web页面,引入所需的JS文件,以及动态生成所需的HTML元素等。完整的代码在下面的代码块中: <!DOCTYPE html> <ht…

    JavaScript 2023年6月10日
    00
  • element-ui树形控件后台返回的数据+生成组织树的工具类

    生成树形组织结构需要以下两个步骤: 后台返回的数据必须是一个符合规范的JSON格式的树形结构。 例如,以下是符合规范的树形JSON数据结构示例: [ { "id": 1, "name": "Node1", "children": [ { "id": 2, &q…

    JavaScript 2023年6月10日
    00
  • JavaScript 对象合并的几种方法小结

    针对“JavaScript 对象合并的几种方法小结”,以下是详细的攻略。 什么是JavaScript对象合并 JavaScript对象合并,指的是将两个或多个对象合并成一个新的对象。 在JavaScript中,合并对象是一种常见的操作,它可以将多个对象中的属性和方法合并到一起,以创建一个新的对象,这样我们就可以方便地管理和操作这些属性和方法。 方法1:Obj…

    JavaScript 2023年5月27日
    00
  • js实现获取两个日期之间所有日期的方法

    首先,我们可以利用 JavaScript 中的 Date 对象来进行日期计算和格式化,从而实现获取两个日期之间所有日期的方法。以下是实现方法的步骤: 定义一个函数,接收两个参数,表示开始日期(start)和结束日期(end)。 利用 Date.parse() 方法将日期字符串转换为时间戳,方便后面的计算。 利用 Math.abs() 方法求出两个日期之间的毫…

    JavaScript 2023年5月27日
    00
  • JavaScript中的面向对象介绍

    下面我将详细讲解“JavaScript中的面向对象介绍”的完整攻略。 什么是面向对象编程? 在面向对象编程中,我们把数据和对这些数据进行操作的函数捆绑在一起,这些函数称为类。它是一种编程思想或编程范式,通过模拟真实世界中的对象,将代码组织为对象的集合,并通过封装、继承和多态等概念,使得代码更加易于维护和扩展。 在JavaScript中,面向对象编程主要是基于…

    JavaScript 2023年5月27日
    00
  • 一文总结JavaScript中Promise遇到的问题

    一文总结JavaScript中Promise遇到的问题 Promise是什么? Promise是一种规范,主要解决了JavaScript中回调地狱的问题,可以让我们更加方便地进行异步编程。Promise主要有以下三种状态: Pending(进行中) Fulfilled(已完成) Rejected(已拒绝) Promise的基本用法 function fetc…

    JavaScript 2023年5月28日
    00
  • vue实现微信浏览器左上角返回按钮拦截功能

    介绍:Vue可以通过使用路由导航守卫来拦截某些操作,其中之一就是拦截微信浏览器左上角的返回按钮。本攻略将详细介绍如何使用Vue及路由导航守卫实现微信浏览器左上角返回按钮的拦截功能。 步骤: 1.安装Vue Router 安装Vue Router是实现路由动态跳转的必要前提。使用npm或yarn,运行以下命令: npm install vue-router O…

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