js实现秒表计时器

实现 js 的秒表计时器功能,可以按照以下步骤进行:

1. 创建页面结构

页面需要包含一个显示时间的区域和三个按钮,分别是“开始计时”、“暂停计时”和“重置计时”按钮。按钮可以使用 button 标签创建,显示时间的区域可以使用 div 标签创建。

下面是一个简单的页面结构示例:

<div id="clock">00:00:00</div>
<button id="start">开始计时</button>
<button id="pause">暂停计时</button>
<button id="reset">重置计时</button>

2. 编写 JavaScript 代码

首先,我们需要定义一个计时器变量(timer),并且初始化为 0。

let timer = 0;

接下来,我们需要编写一个函数,用于将计时器的时间转换为可读的格式。该函数接受一个参数 timeInSeconds,代表了当前的计时器时间,单位为秒。函数内部首先将时间转换为小时、分钟和秒的形式,然后将它们格式化成两位数,并且返回字符串类型的时间格式。

function formatTime(timeInSeconds) {
  const hours = Math.floor(timeInSeconds / 3600);
  const minutes = Math.floor((timeInSeconds % 3600) / 60);
  const seconds = timeInSeconds % 60;
  return `${hours.toString().padStart(2, '0')}:${minutes
    .toString()
    .padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}

接下来,我们需要编写一个函数,将时间显示在页面上。该函数内部调用上面编写的 formatTime 函数,将计时器的时间格式化并赋值给显示时间的区域。

function displayTime() {
  const clock = document.getElementById('clock');
  clock.textContent = formatTime(timer);
}

然后,我们需要编写一个函数,用于开始计时。该函数内部需要调用 setInterval 函数来递增计时器变量 timer,并且每秒更新显示区域的时间。

注意,该函数需要避免重复调用,考虑到用户可能需要在运行时暂停计时器,我们可以在函数内部添加一个状态变量 isRunning,用于判断当前计时器是否在运行状态。

let isRunning = false;
function startTimer() {
  if (!isRunning) {
    isRunning = true;
    setInterval(() => {
      timer++;
      displayTime();
    }, 1000);
  }
}

接下来,我们需要编写一个函数,暂停计时器。该函数内部需要清除之前 setInterval 函数的计时器,并且将 isRunning 变量置为 false。这样,当用户再次点击“开始计时”按钮时,计时器才能继续运行。

function pauseTimer() {
  if (isRunning) {
    clearInterval(timerInterval);
    isRunning = false;
  }
}

最后,我们需要编写一个函数,用于重置计时器。该函数需要清空计时器变量并将显示时间区域中的内容重置为“00:00:00”。

function resetTimer() {
  timer = 0;
  displayTime();
}

3. 示例说明

示例一

在按钮上添加 click 事件,用事件委托的方式监听多个按钮的点击事件。

const btnWrapper = document.querySelector('.btn-wrapper');
btnWrapper.addEventListener('click', (e) => {
  const target = e.target;
  switch (target.id) {
    case 'start':
      startTimer();
      break;
    case 'pause':
      pauseTimer();
      break;
    case 'reset':
      resetTimer();
      break;
    default:
      break;
  }
});

示例二

将计时器应用于一个元素上,并且支持在所有的子元素中通过命名规则来控制计时器。

const clock = document.getElementById('clock');
clock.start = function () {
  startTimer();
};
clock.pause = function () {
  pauseTimer();
};
clock.reset = function () {
  resetTimer();
};
clock.addEventListener('click', (e) => {
  const target = e.target;
  if (target.classList.contains('start')) {
    clock.start();
  } else if (target.classList.contains('pause')) {
    clock.pause();
  } else if (target.classList.contains('reset')) {
    clock.reset();
  }
});

在这个示例中,我们可以在元素的子元素中添加 .start, .pause, .reset 类名来控制计时器。在页面中使用该计时器时,可以用以下方式创建元素:

<div id="clock">
  <span class="start">开始计时</span>
  <span class="pause">暂停计时</span>
  <span class="reset">重置计时</span>
</div>

当点击该元素中任意一个子元素时,都能控制计时器开始、暂停或者重置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现秒表计时器 - Python技术站

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

相关文章

  • 关于vue.js中this.$emit的理解使用

    关于vue.js中this.$emit的理解与使用攻略 什么是this.$emit? 在Vue.js中,this.$emit()是一个特殊的方法,用于定制组件的自定义事件。 在子组件中使用this.$emit(eventName, data)可以触发父组件的自定义事件,这样父组件就能够在监听到该事件后进行相应的处理。 this.$emit使用方法 在Vue.…

    JavaScript 2023年6月10日
    00
  • JavaScript实现烟花特效(面向对象)

    当下,烟花特效是web前端常见的动画效果之一,本攻略将详细介绍如何通过JavaScript编写实现烟花特效。 步骤一:创建HTML文件 在开发本特效之前,首先需要建立一个HTML文件用于展示页面内容。以下是一个基本的HTML模板,用户可以根据需要添加和修改其他元素: <!DOCTYPE html> <html> <head&gt…

    JavaScript 2023年6月10日
    00
  • JavaScript Ajax请求

    JavaScript Ajax请求的完整攻略: 1. 创建XMLHttpRequest对象(XHR) 创建XHR对象是Ajax请求的第一步。XHR是一个内置的JavaScript对象,允许在不刷新页面的情况下向服务器发送请求。 var xhr = new XMLHttpRequest(); 2. 准备请求 在发起请求之前,需要设置请求的各个参数,如请求类型、…

    Web开发基础 2023年3月30日
    00
  • Asp.net 后台添加CSS、JS、Meta标签的方法

    下面是详细讲解”Asp.net后台添加CSS、JS、Meta标签的方法”的完整攻略。 添加CSS样式 在Asp.net中,我们可以在后台代码中通过以下方式添加CSS样式: protected void Page_Load(object sender, EventArgs e) { this.Page.Header.Controls.Add(new Liter…

    JavaScript 2023年6月10日
    00
  • JS操作XML实例总结(加载与解析XML文件、字符串)

    加载与解析XML文件、字符串是JS操作XML的重要部分,本文将为您详细讲解如何完成此操作。 加载XML文件 使用XMLHttpRequest对象,可以向服务器请求XML文件并返回。具体步骤如下: 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); 打开XML文件 xhr.open(“GET”, “exampl…

    JavaScript 2023年5月27日
    00
  • 一文学会JavaScript如何手写防抖节流

    在本篇文章中,我们将深入探讨JavaScript中的“防抖(debounce)”和“节流(throttle)”的概念,以及如何手写实现它们。以下是详细攻略: 什么是防抖和节流 在理解如何手写实现防抖和节流之前,需要先了解它们是什么。 防抖 当需要执行一个函数时,如果该函数需要被频繁地调用,会导致性能问题。防抖可以解决这个问题。防抖的原理是:在调用函数后,设置…

    JavaScript 2023年6月10日
    00
  • JS模拟实现串行加法器

    JS模拟实现串行加法器的攻略分为以下几步: 1. 了解加法器的原理与特点 加法器是计算机中至关重要的数据处理器之一,它可以将两个或多个数字相加,可用于各种应用中,如计算机内存、操作数检查和基本算术运算。串行加法器是指一步一步实现加法计算,即从低位到高位逐步计算的加法器,特点是每位计算只相关前一个位置的进位,而后一位的进位则要待到下一次计算中。 2. 实现JS…

    JavaScript 2023年5月27日
    00
  • js使用cookie实现记住用户名功能示例

    使用cookie可以保存用户的登录状态,可以实现记住用户名的功能。下面是使用JavaScript实现记住用户名的完整攻略: 1. 创建登录表单 首先需要在页面上创建一个登录表单,包含用户名和密码的输入框、记住密码的复选框和提交按钮。 <form id="login-form"> <label>用户名:</la…

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