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日

相关文章

  • C#自定义序列化ISerializable的实现方法

    C# 中的自定义序列化可以通过实现ISerializable接口来实现。该接口要求实现GetObjectData(SerializationInfo info, StreamingContext context)和带有反序列化逻辑的构造函数。下面是具体实现方法的完整攻略: 1. 实现 ISerializable 接口 [Serializable] publi…

    C# 2023年5月15日
    00
  • c# 异步编程入门

    C# 异步编程入门 什么是异步编程 异步编程是指在代码执行时,允许在执行某些线程耗时的操作时不会阻塞当前线程的执行,以提高程序的性能和响应速度。在 C# 中,异步编程通常与任务(Task)和异步方法(async/await)一起使用。 使用 async/await 实现异步编程 异步编程最常见的实现方式是使用 async/await 关键字。这两个关键字一起…

    C# 2023年6月6日
    00
  • C#用户定义类型转换详解

    C#用户定义类型转换详解 C#用户定义类型转换是指在C#中自定义类型转换方法,允许将一个用户定义类型转换为另一个用户定义类型。本文将详细讲解C#用户定义类型转换的实现方式以及使用场景。 实现方式 首先,需要定义一个类和一个用户定义类型的方法,然后使用隐式或显式转换将用户定义类型转换为类类型。 在 C# 中,有两种类型转换方法:隐式和显式转换。 隐式转换 隐式…

    C# 2023年5月31日
    00
  • ASP.NET Core MVC 从入门到精通之数据库

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启…

    C# 2023年5月5日
    00
  • C# GroupBy的基本使用教程

    C# GroupBy的基本使用教程 简介 GroupBy是LINQ查询中常用的操作,可以将序列按照一定的规则分组,返回一个以分组为键,子序列为值的字典。 基本使用 对于一个集合,我们可以使用GroupBy方法对其进行分组。以下是GroupBy方法的基本语法: IEnumerable<IGrouping<TKey, TElement>>…

    C# 2023年6月1日
    00
  • C#.net实现在Winform中从internet下载文件的方法

    C#语言是一个功能强大的编程语言,它可以实现在Winform中从internet下载文件。本文将介绍如何使用C#.net编程语言实现Winform中下载文件的方法。本文的讲解过程分为以下四步: 使用HttpWebRequest连接到internet并下载文件 创建下载进度条 保存下载文件 报告下载进度 下面详细讲解每一步的实现方法。 第一步 使用HttpWe…

    C# 2023年6月1日
    00
  • 在.net core中实现字段和属性注入的示例代码

    在.NET Core中,我们可以使用依赖注入的方式将依赖关系注入到对象中,包括字段和属性注入。以下是在.NET Core中实现字段和属性注入的示例代码的攻略。 1. 创建一个接口 首先,我们需要定义一个接口,它将被注入到我们的类中。此处示例中,我们创建了一个名为 ILogger 的接口,用于记录日志。 public interface ILogger { v…

    C# 2023年5月31日
    00
  • C#中泛型举例List与DataTable相互转换

    C#中的泛型是一种类型参数化的机制,可以轻松创建复用性高、类型安全性强的代码。其中List和DataTable都是常见的泛型集合类型,本文将介绍如何在它们之间相互转换。 List转DataTable 首先,我们需要创建一个List类型的数据源作为例子,这里我们创建一个简单的Person类: public class Person { public strin…

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