<html>

<body>

<span>倒计时30分钟:</span><span id="clock">00:30:00:00</span>

</body>

</heml>

<script type="text/javascript">

//秒表倒计时控制
var normalelapse = 100;  
var nextelapse = normalelapse;
var counter;   
var startTime;
var start1 = clock.innerText;   
var finish = "00:00:00:00";  
var timer = null;  
// 开始运行  
function run() {  
    counter = 0;  
    // 初始化开始时间  
    startTime = new Date().valueOf(); 
    //alert(startTime);
     
    // nextelapse是定时时间, 初始时为100毫秒  
    // 注意setInterval函数: 时间逝去nextelapse(毫秒)后, onTimer才开始执行  
    timer = window.setInterval("onTimer()", nextelapse);   
}  
// 停止运行  
function stop() {  
    window.clearTimeout(timer);  
}  
window.onload = function() {   
 run();
}  
// 倒计时函数  
function onTimer()  
{  
    if (start1 == finish)  
    {  
        window.clearInterval(timer);   
        return;  
    }  
    var hms = new String(start1).split(":");  
    var ms = new Number(hms[3]);  
    var s = new Number(hms[2]);  
    var m = new Number(hms[1]);  
    var h = new Number(hms[0]);  
    ms -= 10;  
    if (ms < 0)  
    {  
        ms = 90;  
        s -= 1;  
        if (s < 0)  
        {  
            s = 59;  
            m -= 1;  
        }  
        if (m < 0)  
        {  
            m = 59;  
            h -= 1;  
        }  
    }  
    var ms = ms < 10 ? ("0" + ms) : ms;  
    var ss = s < 10 ? ("0" + s) : s;  
    var sm = m < 10 ? ("0" + m) : m;  
    var sh = h < 10 ? ("0" + h) : h;  
    start1 = sh + ":" + sm + ":" + ss + ":" + ms;  
    clock.innerText = start1;  
    // 清除上一次的定时器  
    window.clearInterval(timer);  
    // 自校验系统时间得到时间差, 并由此得到下次所启动的新定时器的时间nextelapse  
    counter++;   
    var counterSecs = counter * 100;  
    var elapseSecs = new Date().valueOf() - startTime;  
    var diffSecs = counterSecs - elapseSecs;  
    nextelapse = normalelapse + diffSecs;  
    //diff.value = counterSecs + "-" + elapseSecs + "=" + diffSecs;  
   // next.value = "nextelapse = " + nextelapse;  
    if (nextelapse < 0) nextelapse = 0;  
    // 启动新的定时器  
    timer = window.setInterval("onTimer()", nextelapse);   
}

</script>

转载自:https://blog.csdn.net/pamchen/article/details/7854855

JS秒表倒计时器 (转)的更多相关文章

  1. 多线程之倒计时器CountDownLatch和循环栅栏CyclicBarrier

    1.倒计时器CountDownLatch CountDownLatch是一个多线程控制工具类.通常用来控制线程等待,它可以让一个线程一直等待知道计时结束才开始执行 构造函数: public Count ...

  2. Android倒计时器——CountDownTimer

    Android倒计时器--CountDownTimer 说明 第一个参数是倒计时的时间 第二个参数是多长时间执行一次回调 /** * @param millisInFuture The number ...

  3. 多线程控制工具类--倒计时器CountDownLatch的使用(模仿火箭发射)

    package com.thread.test.Lock; import java.util.Random; import java.util.concurrent.CountDownLatch; i ...

  4. JS中的计时器事件

    JS可以实现很多java代码不易完成的功能.这里学习一些js中的计时器事件. JavaScript 一个设定的时间间隔之后来执行代码,称之为计时事件. 主要通过两个方法来实现: 1.setInterv ...

  5. 3.1.5 倒计时器:CountDownLatch

    package 第三章.倒计时器CountDownLatch; import java.util.concurrent.CountDownLatch; /** * Created by zzq on ...

  6. 【JavaScript】分秒倒计时器

    一.基本目标 在JavaScript设计一个分秒倒计时器,一旦时间完毕使button变成不可点击状态 详细效果例如以下图.为了说明问题.调成每50毫秒也就是每0.05跳一次表, 真正使用的时候,把wi ...

  7. js中的计时器事件`setTimeout()` 和 `setInterval()`

    js中的计时器事件 在js中,通常会有一些事件,我们需要让它 间隔一段时间之后再发生,或者 每隔一段时间 发生一次,那就需要用到我们js中的计时事件 计时事件主要有两种: setTimeout() - ...

  8. [FPGA]Verilog实现可自定义的倒计时器(24秒为例)

    目录 想说的话... 样例_边沿检测计数器 代码讲解 仿真演示 拓展_自定义倒计时数和倒计时间隔 代码讲解 仿真演示 总结 实例_24秒倒计时器 想说的话... 本次实现的是一个24秒倒计时器,功能顾 ...

  9. Java基础教程:多线程基础(5)——倒计时器(CountDownLatch)

    Java基础教程:多线程基础(5)——倒计时器(CountDownLatch) 引入倒计时器 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种 ...

随机推荐

  1. python 中的变量内存以及关于is ==、 堆栈、

    在工作学习中会碰到一些python中变量与内存层面的问题理解,虽然是在不断的解决,但是并没有做过这方面的总结. 变量:用来标识(identify)一块内存区域.为了方便表示内存,我们操作变量实质上是在 ...

  2. 文件包含之包含了Linux文件描述符

    0x00 原理   文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符. 翻译成人话- 可以认为是指向文件的一个指针,如果有文件 ...

  3. Java核心技术卷阅读随笔--第2章【Java 程序设计环境】

    Java 程序设计环境 本章主要介绍如何安装 Java 开发工具包( JDK ) 以及如何编译和运行不同类型的程序: 控制台程序. 图形化应用程序以及 applet.运行 JDK 工具的方法是在终端窗 ...

  4. 【RMAN】使用RMAN备份将数据库不完全恢复到指定时间点

    RMAN作为Oracle强大的备份恢复工具,可以协助我们恢复数据库到指定时间点,这便是Oracle不完全恢复的一种体现,通过这种方法可以找回我们曾经丢失的数据.这里以找回误TRUNCATE表数据为例给 ...

  5. Linux下Flash-LED的处理

    Linux下Flash-LED的处理 一些LED设备提供两种模式-torch和flash.在LED子系统中,LED类(参见Linux下的LED处理)和LED Flash类,分别支持这些模式.torch ...

  6. CUDA 9中张量核(Tensor Cores)编程

    CUDA 9中张量核(Tensor Cores)编程 Programming Tensor Cores in CUDA 9 一.概述 新的Volta GPU架构的一个重要特点是它的Tensor核,使T ...

  7. CAP 超详细名词解释

    目录 引言 概述 分布式 一致性 ACID中的一致性 可用性 分区容错性 可用性与分区容错性,傻傻分不清 问题1:分区容错性说分区故障正常工作,什么叫正常工作?这个正常工作是指满足可用性吗? 问题2: ...

  8. JUC 并发编程--10, 阻塞队列之--LinkedBlockingDeque 工作窃取, 代码演示

    直接上代码 class LinkedBlockingDequeDemo { // 循环是否结束的开关 private static volatile boolean flag1 = true; pri ...

  9. MapReduce —— MapTask阶段源码分析(Output环节)

    Dream car 镇楼 ~ ! 接上一节Input环节,接下来分析 output环节.代码在runNewMapper()方法中: private <INKEY,INVALUE,OUTKEY,O ...

  10. 最新版robotframework4.0.3版本安装

    python最新版本已经到了3.9了.对应的最新版本也更新到robotframework4.0.3. robotframework支持的自动化测试的类型以及需要的库: 1.ui自动化测试:Seleni ...