Javascript实现的StopWatch功能示例

下面我将详细讲解如何实现“Javascript实现的StopWatch功能示例”。

确定需求

首先,我们需要确定需求。

这个StopWatch功能的核心就是计时器功能,需要实现计时功能和计时器控制功能,可以是通过控制开始/暂停/停止操作实现。

HTML结构

接下来,我们需要确定HTML结构。

StopWatch功能界面的HTML结构比较简单,只需要一个显示时间的区域和三个按钮:开始、暂停和停止。

HTML代码如下所示:

 <div id="stopwatch">
    <span id="display">00:00:00</span>
    <button id="start">开始</button>
    <button id="stop">停止</button>
    <button id="pause">暂停</button>
</div>

JS代码

然后,我们需要编写JS代码来实现计时器功能及控制功能。

先定义好变量:

var startTime = 0;
var start = 0;
var end = 0;
var diff = 0;

var timerID = 0;

然后实现计时器功能:

function timer() {
    end = new Date();
    diff = end - start;
    diff = new Date(diff);

    var msec = diff.getMilliseconds();
    var sec = diff.getSeconds();
    var min = diff.getMinutes();
    var hr = diff.getHours() - 8;

    if (hr < 10) {
        hr = "0" + hr;
    }
    if (min < 10) {
        min = "0" + min;
    }
    if (sec < 10) {
        sec = "0" + sec;
    }
    if (msec < 10) {
        msec = "00" + msec;
    }
    else if (msec < 100) {
        msec = "0" + msec;
    }

    document.getElementById("display").innerHTML = hr + ":" + min + ":" + sec + ":" + msec;
    timerID = setTimeout("timer()", 10);
}

接着,实现控制功能:

function startWatch() {
    document.getElementById("display").innerHTML = "00:00:00:000";
    startTime = new Date();
    timer();
}

function stopWatch() {
    clearTimeout(timerID);
}

function pauseWatch() {
    clearTimeout(timerID);
    end = new Date();
    diff = end - start;
}

最后,我们需要添加按钮监听事件来触发计时器的开始、暂停和停止控制功能:

window.onload = function() {
    document.getElementById("start").addEventListener("click", startWatch);
    document.getElementById("stop").addEventListener("click", stopWatch);
    document.getElementById("pause").addEventListener("click", pauseWatch);
}

完成以上JS代码后,我们就实现了一个StopWatch功能的计时器。通过HTML呈现出来的界面,在JavaScript的实现下,实现了简单的计时器功能。  

示例说明

  • 示例1:以上代码在window.onload时会触发监听方法,开始按钮对应启动startWatch()方法,触发timer()方法进行计时并显示;暂停按钮对应触发pauseWatch方法,暂停计时。由于pauseWatch()方法并没有清空已经触发的timer()方法,因此暂停后重新启用,会继续在暂停时的时间基础上再次计时;停止按钮对应触发stopWatch()方法,清空计时器,停止计时。

  • 示例2:以上的calculateTimeElapsed()方法可以实现任意两个时间点之间的时间间隔计算,可以应用于任意需求,如考生答题的计时器,监测程序的计时器等等。但需要注意的是,js中的时间间隔是按照毫秒计算的,而和系统时间有关,因此不建议使用过长时间间隔或者精确度要求很高的场合,如科学实验等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript实现的StopWatch功能示例 - Python技术站

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

相关文章

  • Entity Framework使用Code First模式管理存储过程

    1.设置数据库连接字符串 首先,在应用程序的配置文件中设置数据库连接字符串。这里以使用SQL Server为例,将连接字符串命名为“DefaultConnection”: <connectionStrings> <add name="DefaultConnection" connectionString="Da…

    C# 2023年6月3日
    00
  • C#中using语句的用法

    当我们在使用C#编写代码时,经常会涉及到需要使用一些资源,例如文件、数据库连接等等。为了避免资源被长时间占用,并能够在资源使用完毕后自动释放这些资源,C#语言提供了using语句的语法。 什么是using语句 在C#中,using语句是一个用于创建和处理对象的语句块。在这个语句块中,代码可以访问对象或资源并在不需要它们时释放它们。 using语句适用于那些实…

    C# 2023年5月15日
    00
  • c# 线程安全队列的用法原理及使用示例

    C# 线程安全队列的用法原理及使用示例 什么是线程安全队列? 在线程并发编程中,多个线程同时访问共享数据结构时,会存在竞态条件(race condition)问题,可能导致数据不一致、数据丢失或程序崩溃等问题。为了解决这些问题,需要使用线程安全的数据结构进行并发操作,其中线程安全队列就是一种常见的数据结构。 线程安全队列是一种特殊的队列,能够在多线程并发的情…

    C# 2023年6月7日
    00
  • C#简单实现SNMP的方法

    C#简单实现SNMP的方法 简介 SNMP(Simple Network Management Protocol)是一种网络管理协议,它用于管理和监控网络上的设备。C#是一种多范式编程语言,具有强大的对象导向能力,可以方便地实现SNMP协议。 实现步骤 安装依赖库 在C#中实现SNMP需要使用NuGet包管理器的SharpSnmpLib库。您可以通过以下命令…

    C# 2023年6月7日
    00
  • WPF实现类似360安全卫士界面的程序源码分享

    WPF(Windows Presentation Foundation)是一种用于创建Windows桌面应用程序的技术。本文将介绍如何使用WPF实现类似360安全卫士界面的程序源码分享的完整攻略。 步骤一:创建WPF项目 首先,需要创建一个WPF项目。可以使用Visual Studio创建一个新的WPF项目。在创建项目时,可以选择“WPF应用程序”模板。 步…

    C# 2023年5月15日
    00
  • c#中抽象类和接口的详细介绍

    关于”C#中抽象类和接口的详细介绍”,我可以提供以下内容: 抽象类 抽象类是指包含抽象成员(抽象方法、属性、索引器或事件)的类。抽象类本身不能被实例化,而是用作其他非抽象类的基类。一个派生类必须实现从其抽象基类继承的所有抽象成员,否则,该派生类本身也必须被声明为抽象类。 定义抽象类 抽象类可以使用abstract关键字定义,如下所示: public abst…

    C# 2023年6月1日
    00
  • 基于C#实现Windows服务状态启动和停止服务的方法

    下面就是基于C#实现Windows服务状态启动和停止服务的完整攻略。 1.概述 Windows服务是在后台运行的应用程序,它可以在系统启动时自动启动,也可以手动启动。为了方便控制Windows服务的运行状态,我们可以通过编写C#程序实现对服务的启动和停止操作。在下面的步骤中,我们将讲解如何使用C#代码实现这些操作。 2.获取服务对象 首先,我们需要获取Win…

    C# 2023年6月7日
    00
  • C# SortedList排序列表的实现

    C#中的SortedList是一种排序列表,它关联了键和值,并按键的排序顺序存储键值对。在本文中,我们将详细讲解如何使用C# SortedList排序列表,包括创建、添加、删除和排序键值对。 创建SortedList 我们可以使用泛型和非泛型方法创建SortedList对象。下面是创建一个非泛型的SortedList的示例代码: SortedList myS…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部