js实现倒计时器自定义时间和暂停

倒计时器是一个非常常见的功能,可以用于定时关闭某些功能,在活动中用于倒计时提醒等场景。本文将介绍如何使用JavaScript实现倒计时器自定义时间和暂停的功能。

实现自定义时间

首先,我们需要先实现一个基本版的倒计时器,代码如下:

// 设置倒计时时间(秒)
var countDownTime = 60;

// 获取倒计时元素
var countDown = document.getElementById("countdown");

// 开始倒计时
var intervalId = setInterval(function() {
  if(countDownTime > 0) {
    countDownTime--;
    countDown.innerHTML = countDownTime + "秒";
  } else {
    clearInterval(intervalId);
    countDown.innerHTML = "倒计时结束";
  }
}, 1000);

上述代码中,我们先设置了倒计时时间为60秒,获取了倒计时元素,并使用setInterval定时器开始倒计时。在定时器的回调函数中,我们每隔一秒钟将倒计时时间减1,直到倒计时结束。

现在,如果我们想要实现自定义时间的功能,只需要将原来的countDownTime变量改为一个输入框的值即可。具体实现代码如下:

<!-- 输入框 -->
<input type="text" id="inputDuration" placeholder="输入倒计时时间(秒)">

<!-- 按钮 -->
<button onclick="startCountDown()">开始倒计时</button>

<!-- 倒计时元素 -->
<div id="countdown"></div>

<script>
function startCountDown() {
  // 获取输入框的值
  var inputDuration = document.getElementById("inputDuration").value;
  var countDownTime = parseInt(inputDuration);

  // 获取倒计时元素
  var countDown = document.getElementById("countdown");

  // 开始倒计时
  var intervalId = setInterval(function() {
    if(countDownTime > 0) {
      countDownTime--;
      countDown.innerHTML = countDownTime + "秒";
    } else {
      clearInterval(intervalId);
      countDown.innerHTML = "倒计时结束";
    }
  }, 1000);
}
</script>

在上述代码中,我们增加了一个输入框,用于输入倒计时时间(单位为秒)。在点击开始倒计时按钮时,我们获取输入框的值,并将其转换为一个整数用于倒计时。然后,我们使用setInterval定时器开始倒计时,同样每隔一秒钟减少倒计时时间,直到倒计时结束。

实现暂停功能

现在,我们已经可以使用JavaScript实现自定义时间的倒计时器了,接下来让我们看看如何实现暂停功能。

首先,在代码中增加一个按钮,用于触发暂停操作。然后,我们需要在代码中记录倒计时器的状态,用于控制暂停和继续操作。我们在代码中新增一个变量isCounting,用于表示当前倒计时器是否在运行中。代码如下:

<!-- 输入框 -->
<input type="text" id="inputDuration" placeholder="输入倒计时时间(秒)">

<!-- 按钮 -->
<button onclick="startCountDown()">开始倒计时</button>
<button onclick="pauseCountDown()">暂停倒计时</button>

<!-- 倒计时元素 -->
<div id="countdown"></div>

<script>
var intervalId;
var isCounting = false;

function startCountDown() {
  // 获取输入框的值
  var inputDuration = document.getElementById("inputDuration").value;
  var countDownTime = parseInt(inputDuration);

  // 获取倒计时元素
  var countDown = document.getElementById("countdown");

  // 开始倒计时
  intervalId = setInterval(function() {
    isCounting = true; // 标记倒计时器正在运行
    if(countDownTime > 0) {
      countDownTime--;
      countDown.innerHTML = countDownTime + "秒";
    } else {
      clearInterval(intervalId);
      countDown.innerHTML = "倒计时结束";
    }
  }, 1000);
}

function pauseCountDown() {
  if(isCounting) {
    clearInterval(intervalId);
    isCounting = false; // 标记倒计时器已经暂停
  }
}
</script>

在上述代码中,我们新增了一个按钮,用于触发暂停操作。然后,在startCountDown函数中,添加了isCounting变量用于标记倒计时器是否在运行中,每次倒计时器在更新时间时更新isCounting的值,以便我们在暂停操作时判断其是否正在运行。在pauseCountDown函数中,我们判断isCounting变量的值,如果是true,则停止定时器并将isCounting变量设置为false,表示倒计时器已经暂停。

这样,我们就实现了JavaScript倒计时器的自定义时间和暂停功能。

示例1:

假设我们在页面中添加一个输入框和一个按钮,用于输入倒计时时间和开始倒计时操作,如下:

<label for="inputDuration">倒计时时间:</label>
<input type="text" id="inputDuration" placeholder="输入倒计时时间(秒)">
<button onclick="startCountDown()">开始倒计时</button>

<div id="countdown"></div>

我们可以使用上述代码的startCountDown和pauseCountDown函数来实现倒计时器的自定义时间和暂停功能。

示例2:

假设现在我们需要在页面中实现两个不同的倒计时器,每个倒计时器可以设置不同的倒计时时间,并支持暂停和继续操作。代码如下:

<!-- 第一个倒计时器 -->
<label for="inputDuration1">倒计时时间1:</label>
<input type="text" id="inputDuration1" placeholder="输入倒计时时间(秒)">
<button onclick="startCountDown('countdown1')">开始倒计时</button>
<button onclick="pauseCountDown()">暂停倒计时</button>

<div id="countdown1"></div>

<hr>

<!-- 第二个倒计时器 -->
<label for="inputDuration2">倒计时时间2:</label>
<input type="text" id="inputDuration2" placeholder="输入倒计时时间(秒)">
<button onclick="startCountDown('countdown2')">开始倒计时</button>
<button onclick="pauseCountDown()">暂停倒计时</button>

<div id="countdown2"></div>

<script>
var intervalId;
var isCounting = false;

function startCountDown(countDownId) {
  // 获取输入框的值
  var inputDuration = document.getElementById("inputDuration").value;
  var countDownTime = parseInt(inputDuration);

  // 获取倒计时元素
  var countDown = document.getElementById(countDownId);

  // 开始倒计时
  intervalId = setInterval(function() {
    isCounting = true; // 标记倒计时器正在运行
    if(countDownTime > 0) {
      countDownTime--;
      countDown.innerHTML = countDownTime + "秒";
    } else {
      clearInterval(intervalId);
      countDown.innerHTML = "倒计时结束";
    }
  }, 1000);
}

function pauseCountDown() {
  if(isCounting) {
    clearInterval(intervalId);
    isCounting = false; // 标记倒计时器已经暂停
  }
}
</script>

在上述代码中,我们通过给按钮添加参数的方式,将倒计时器的元素id传递到startCountDown函数中,用于指定不同的倒计时器。在每个倒计时器的HTML代码中,我们使用不同的div元素来显示不同的倒计时器元素,每个元素的id分别为"countdown1"和"countdown2"。我们在每个倒计时器的按钮中都调用了同一个pauseCountDown函数来实现暂停操作,因此,不同的倒计时器均可以进行暂停和继续操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现倒计时器自定义时间和暂停 - Python技术站

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

相关文章

  • 使用JavaScript检测Firefox浏览器是否启用了Firebug的代码

    要使用JavaScript检测Firefox浏览器是否启用了Firebug,可以通过以下步骤进行操作: 使用navigator.userAgent属性获取当前浏览器的信息。 var isFirefox = navigator.userAgent.indexOf("Firefox") > -1; 判断当前浏览器是否为Firefox浏览…

    JavaScript 2023年6月10日
    00
  • JavaScript的for循环中嵌套一个点击事件的问题解决

    JavaScript中的for循环常常被用来遍历一个数据集合中的元素,但是在处理一些特殊场景下,我们需要在循环中嵌套一个点击事件,来对每个元素绑定一个点击事件,实现与该元素相关的操作。这时候,就会面临一些问题,比如嵌套点击事件的作用域问题、如何传入循环变量等。下面是解决这个问题的完整攻略。 问题描述 在JavaScript的for循环中嵌套一个点击事件,绑定…

    JavaScript 2023年5月27日
    00
  • 让浏览器崩溃的12行JS代码(DoS攻击分析及防御)

    针对您提到的这篇文章,我将详细讲解“让浏览器崩溃的12行JS代码(DoS攻击分析及防御)”的完整攻略,过程中会提供两个示例说明。 首先,这篇文章讲的是一种攻击浏览器的简单方法,利用的是 JavaScript 的恶意代码。攻击者只需要12行 JavaScript 代码即可实现攻击,即发送无限的 alert 弹窗,导致浏览器卡死甚至闪退。本文旨在通过分析原理与漏…

    JavaScript 2023年5月28日
    00
  • JavaScript字符串转数字的5种方法及遇到的坑

    让我来为你详细讲解JavaScript字符串转数字的5种方法及遇到的坑。 为什么需要字符串转数字? 在日常的JavaScript编程中,我们经常需要将字符串类型的数据转换为数字类型。例如,从用户输入的表单中获取数值,并将其用于数学运算中。 JavaScript字符串转数字的5种方法 parseInt() parseInt() 方法可以将字符串转换为整数。它接…

    JavaScript 2023年5月28日
    00
  • 如何用JS/HTML将时间戳转换为“xx天前”的形式

    将时间戳转换为类似“xx天前”的形式是一个常见的需求。下面我来详细讲解如何用JS/HTML实现这个功能。 第一步:获取当前时间戳和目标时间戳 JavaScript内置了一个用于获取当前时间戳的方法,即: var now = Date.now(); 如果要将一个日期字符串转换为时间戳,可使用Date.parse方法,例如: var target = Date.…

    JavaScript 2023年5月27日
    00
  • JavaScript Date 知识浅析

    JavaScript Date 知识浅析 什么是 JavaScript Date? JavaScript Date 是 JavaScript 提供的内置对象之一,用于处理日期和时间的相关操作。它允许您创建和格式化日期、获取和设置不同的日期和时间值,以及执行其他日期和时间操作。 如何创建 Date 对象? 要创建一个新的 Date 对象,可以使用以下语法: n…

    JavaScript 2023年5月27日
    00
  • js脚本获取webform服务器控件的方法

    获取WebForm服务器控件的方法通常可以使用JavaScript脚本实现。以下是一些可以获取WebForm服务器控件的常用方法: 1.使用document.getElementById方法 这种方法适合于已知服务器控件的id属性时使用。例如,以下是一个TextBox控件: <asp:TextBox ID="txtName" run…

    JavaScript 2023年6月11日
    00
  • JS 中document.write()的用法和清空的原因浅析

    标题:JS 中 document.write() 的用法和清空的原因浅析 什么是 document.write() ? 在 JavaScript 中,document.write() 是一种常用的方法。它可以将文本或 HTML 代码写入到文档中。当此方法被调用时,输出的内容将被添加到 HTML 页面上当前正在解析的位置。在许多情况下,它用于在页面加载时实时生…

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