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日

相关文章

  • 基于JavaScript实现跳转提示页面

    本文将详细讲解如何基于JavaScript实现跳转提示页面。 1. 前置知识 在了解 JavaScript 实现跳转提示页面之前,您需要了解以下知识: HTML 基础知识 JavaScript 基础知识 网页跳转相关知识 2. 实现步骤 2.1 编写 HTML 页面 首先,我们需要编写一个 HTML 页面,用于展示跳转提示内容。以下是一个简单的示例: &lt…

    JavaScript 2023年6月11日
    00
  • JS获取并处理php数组的方法实例分析

    作为网站的作者,我来为大家详细讲解一下 “JS获取并处理php数组的方法实例分析” 的攻略。 1. 什么是PHP数组? 在PHP中,数组(array)是一种保存一个或多个值的数据结构。它可以在一个单独的变量中存储多个值,并且这些值可以是不同的类型。 PHP数组是一个关联数组,它可以使用数字或字符串作为键来访问元素。 下面是一个简单的PHP数组示例,其中元素使…

    JavaScript 2023年5月19日
    00
  • js字符编码函数区别分析

    JS字符编码函数区别分析 在 JavaScript 中,有几个字符编码相关的函数。本篇文章将详细分析它们的区别。 escape() escape() 函数将非 ASCII 字符和一些 ASCII 字符(如空格、句点、斜杠等)转换为一种特殊的编码格式,比如 %20 代表空格。常用于将一些特殊字符转换为 URL 字符串。 const str = ‘Hello, …

    JavaScript 2023年5月19日
    00
  • Vue中如何把hash模式改为history模式

    Vue中可以通过修改路由模式的方式,从默认的hash模式改为history模式。下面是具体的操作步骤: 1. 修改路由模式 在Vue项目中找到router文件夹,打开index.js文件,找到路由实例的创建代码部分(通常代码会类似如下): import Vue from ‘vue’ import Router from ‘vue-router’ import…

    JavaScript 2023年6月11日
    00
  • javascript输入CD-KEY自动分割的代码

    针对“javascript输入CD-KEY自动分割的代码”,我将分为以下几个方面进行详细讲解: 实现思路:解释实现这一功能的具体步骤和思路; 代码示例1:提供一个完整的javascript代码示例,体现如何实现CD-KEY的自动分割; 代码示例2:提供另外一个完整的javascript代码示例,体现如何根据自定义规则对CD-KEY进行分割。 实现思路:在实现…

    JavaScript 2023年6月11日
    00
  • JavaScript与C# Windows应用程序交互方法

    JavaScript与C# Windows应用程序交互方法 本文将介绍在 Windows 应用程序中如何实现 JavaScript 与 C# 相互通信的方法,主要包括以下内容: 通过 WebView 控件实现 JavaScript 与 C# 的通信 JavaScript 调用 C# 方法示例 C# 调用 JavaScript 方法示例 实现 JavaScri…

    JavaScript 2023年5月27日
    00
  • JavaScript File API实现文件上传预览

    下面是“JavaScript File API实现文件上传预览”的完整攻略。 1. 前置知识 在学习“JavaScript File API实现文件上传预览”之前,需要了解以下基础知识: JavaScript的DOM操作; HTML的文件上传控件<input type=”file”>; JavaScript基础知识,如变量、函数、语法等。 2. …

    JavaScript 2023年5月27日
    00
  • jquery自定义表单验证插件

    请允许我详细讲解一下如何创建一个使用jQuery自定义表单验证插件的过程。 什么是jQuery自定义表单验证插件? jQuery自定义表单验证插件是用于验证表单数据的插件,它使用jQuery作为基础,并可以很容易地自定义来验证不同类型的表单数据。通过使用这个插件,可以将验证逻辑简洁明了地编写在你的前端代码上,可以有效地减少后端代码的数量并极大地提高表单数据的…

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