BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)

BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)攻略

BOM(Browser Object Model)提供了一些和浏览器本身相关的对象,在前端开发中常用的就是定时器。定时器提供了一种方式来在指定时间间隔内调用函数。

setInterval() 和 setTimeout()

在定时器应用中,最常使用的是 setInterval()setTimeout() 这两个方法。

setInterval() 方法会不断调用指定的函数,直到 clearInterval() 被调用或者窗口被关闭。

setTimeout() 方法会在指定的时间间隔后调用一次函数,只执行一次。

这两个定时器都需要传入两个参数:一个是要执行的函数,另一个是时间间隔(毫秒数)。

时钟

我们可以利用 setInterval() 来实现一个简单的时钟。

首先,在 HTML 页面中设定一个显示时间的元素:

<p id="clock"></p>

然后,在 JavaScript 中,用 setInterval() 定时执行一个函数,更新 p 元素中的当前时间:

function updateTime() {
  // 创建当前时间的Date对象
  var now = new Date();

  // 获取时分秒
  var hour = now.getHours();
  var minute = now.getMinutes();
  var second = now.getSeconds();

  // 格式化为两位数
  if (hour < 10) {
    hour = '0' + hour;
  }
  if (minute < 10) {
    minute = '0' + minute;
  }
  if (second < 10) {
    second = '0' + second;
  }

  // 在 p 元素中显示时间
  document.getElementById('clock').innerHTML = hour + ':' + minute + ':' + second;
}

// 每秒钟执行 updateTime() 函数
setInterval(updateTime, 1000);

倒计时

我们可以用 setInterval() 来实现一个倒计时功能,例如在网上购物时,商品页面上常见的 “距离结束还剩…” 的倒计时。

首先,在 HTML 页面中设定一个显示时间的元素:

<p id="countdown"></p>

然后,在 JavaScript 中,用 setInterval() 定时执行一个函数,控制倒计时的时间:

// 设置倒计时时间
var endTime = new Date(2022, 2, 14, 8, 0, 0);

function updateCountdown() {
  // 获取当前时间
  var now = new Date();

  // 计算剩余时间
  var leftTime = endTime.getTime() - now.getTime();
  if (leftTime < 0) {
    leftTime = 0;
  }

  // 计算剩余小时、分钟、秒数
  var leftHour = Math.floor(leftTime / (1000 * 60 * 60));
  var leftMinute = Math.floor(leftTime / (1000 * 60)) % 60;
  var leftSecond = Math.floor(leftTime / 1000) % 60;

  // 在 p 元素中显示倒计时
  document.getElementById('countdown').innerHTML = '距离结束还剩 ' + leftHour + ' 小时 ' + leftMinute + ' 分 ' + leftSecond + ' 秒';
}

// 每秒钟执行 updateCountdown() 函数
setInterval(updateCountdown, 1000);

秒表

我们可以利用 setInterval() 实现一个简单的秒表功能。

首先,在 HTML 页面中设定两个按钮 StartStop

<button id="start">Start</button>
<button id="stop">Stop</button>
<p id="stopwatch">00:00.00</p>

然后,在 JavaScript 中,绑定 StartStop 按钮的点击事件,并用 setInterval() 定时更新秒表时间:

// 准备计算用的变量
var startTime = 0;
var elapsedTime = 0;
var intervalId = null;

function updateTime() {
  // 更新计时时间
  var now = new Date().getTime();
  elapsedTime = now - startTime;

  // 格式化为分和秒
  var minutes = Math.floor(elapsedTime / 60000);
  var seconds = Math.floor((elapsedTime - minutes * 60000) / 1000);
  var milliseconds = Math.floor((elapsedTime - minutes * 60000 - seconds * 1000) / 10);
  if (minutes < 10) {
    minutes = '0' + minutes;
  }
  if (seconds < 10) {
    seconds = '0' + seconds;
  }
  if (milliseconds < 10) {
    milliseconds = '0' + milliseconds;
  }

  // 在 p 元素中显示时间
  document.getElementById('stopwatch').innerHTML = minutes + ':' + seconds + '.' + milliseconds;
}

// 绑定 Start 按钮的点击事件
document.getElementById('start').addEventListener('click', function() {
  // 开始计时
  startTime = new Date().getTime();

  // 每10毫秒更新一次时间
  intervalId = setInterval(updateTime, 10);
});

// 绑定 Stop 按钮的点击事件
document.getElementById('stop').addEventListener('click', function() {
  // 停止计时
  clearInterval(intervalId);
});

闹钟

我们可以用 setTimeout() 来实现一个简单的闹钟功能。

首先,在 HTML 页面中设定一个显示时间的元素和一个设置闹钟时间的输入框:

<input type="text" id="alarmTime" />
<button id="setAlarm">Set Alarm</button>
<p id="alarmMessage"></p>

然后,在 JavaScript 中,绑定 Set Alarm 按钮的点击事件,并用 setTimeout() 来在设定时间后触发闹钟事件:

// 绑定 Set Alarm 按钮的点击事件
document.getElementById('setAlarm').addEventListener('click', function() {
  // 获取设定时间
  var alarmTime = document.getElementById('alarmTime').value;

  // 解析时间,并计算需要等待的毫秒数
  var waitTime = new Date(alarmTime).getTime() - new Date().getTime();

  // 设置定时器,在设定时间后触发闹钟事件
  setTimeout(function() {
    document.getElementById('alarmMessage').innerHTML = 'Time\'s up!';
    // 播放声音或者其他提醒
  }, waitTime);
});

这个例子只是简单地在页面上显示了 “Time's up!” 的文字,实际应用中我们需要进行更多的操作,例如播放声音或者其他的提醒。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟) - Python技术站

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

相关文章

  • JS获取html元素的标记名实现方法

    获取 HTML 元素标记名是 JavaScript 中常用的操作,以下是实现方法的详细攻略: 1. 使用 tagName 属性获取标记名 可以使用 tagName 属性来获取 HTML 元素的标记名。该属性只能用于 DOM 对象,对于文本节点和注释节点是无效的。 示例代码如下: // 获取某个元素的标记名 const element = document.g…

    JavaScript 2023年6月10日
    00
  • js实现多个倒计时并行 js拼团倒计时

    实现多个倒计时并行的方式如下: 使用 Date 对象获取当前时间和目标时间之间的时间差,然后根据时间差计算出剩余时间。 将剩余时间转换成分、秒和毫秒,然后在网页上显示出来,使用定时器每隔一秒更新一次显示的时间。 判断剩余时间是否为零,如果为零则停止定时器,显示倒计时结束提示。 代码示例: // 倒计时的目标时间(2019年12月31日 23:59:59) v…

    JavaScript 2023年6月10日
    00
  • JS验证input输入框(字母,数字,符号,中文)

    这里给出JS验证输入框的完整攻略。我们需要以下步骤来完成验证: 获取输入框元素 给输入框元素绑定事件监听器,以便在输入内容时能够及时验证 在事件监听器的回调函数中,通过正则表达式对输入内容进行验证 根据验证结果,决定是否将输入内容存储到变量或者进行其他操作 下面我们详细分析每个步骤,以及提供两个示例。 步骤1:获取输入框元素 我们可以使用 document.…

    JavaScript 2023年6月10日
    00
  • javascipt匹配单行和多行注释的正则表达式

    当我们编写JavaScript代码时,注释是很重要的一部分。在JavaScript中,注释可以被用来提供可读性和可维护性。其次,注释也可以用来排查问题,因为它们可以帮助我们理解代码。 在JavaScript中,有两种注释类型:单行注释和多行注释。单行注释以“//”开始,而多行注释以“/”开始,以“/”结束。正则表达式可以用来匹配这两种注释。 下面是匹配单行注…

    JavaScript 2023年6月10日
    00
  • JavaScript实现简单的数字倒计时

    下面我将详细讲解JavaScript实现简单的数字倒计时的完整攻略。 1. 实现思路 倒计时可以理解为是一段时间(比如30秒钟)的逆向计时,因此要实现数字倒计时,我们需要知道以下几个东西: 终止时间(即倒计时结束时间) 当前时间 剩余时间(即终止时间减去当前时间) 有了以上三个数据,我们就可以通过JavaScript来实现数字倒计时,具体步骤如下: 获取元素…

    JavaScript 2023年5月27日
    00
  • 谈谈我对JavaScript原型和闭包系列理解(随手笔记6)

    来详细讲解一下“谈谈我对JavaScript原型和闭包系列理解(随手笔记6)”这篇文章。 标题 文章的标题是“谈谈我对JavaScript原型和闭包系列理解(随手笔记6)”,主要内容是探讨JavaScript中的原型和闭包。 正文 原型 在JavaScript中,每个对象都有一个原型对象(即 prototype 属性)。原型对象是一个普通的对象,它有可能也有…

    JavaScript 2023年6月10日
    00
  • JS经典正则表达式笔试题汇总

    JS经典正则表达式笔试题汇总是一篇关于JS正则表达式的经典案例和笔试题的文章。下面我将针对这篇文章给出一份完整的攻略。 一、准备工作 在阅读本篇文章前,请确保您已经掌握以下知识点: 正则表达式的基本语法 正则表达式的元字符及其用途 正则表达式的量词及其用途 正则表达式的特殊字符及其用途 二、攻略步骤 1. 多次阅读 阅读文章时,要多次阅读,不同时间有不同的理…

    JavaScript 2023年5月28日
    00
  • Javascript入门学习第八篇 js dom节点属性说明第1/2页

    让我来为你讲解“Javascript入门学习第八篇 js dom节点属性说明第1/2页”的完整攻略。 理解 DOM 节点属性 DOM 节点是网页中的 HTML 元素,如文本、图像和按钮等。每个节点都有一些属性,这些属性用来指定节点的特征和状态。理解这些节点属性对于 Javascript 开发人员来说非常必要。 常见的 DOM 节点属性 常见的 DOM 节点属…

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