<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>倒计时</title>
<style>
body,html{
margin: 0;
padding: 0;
width:100%;
height: 100%; } .wrapper{
width:100%;
height:100%;
background: url(images/body.gif) no-repeat;
background-repeat: repeat-x;
padding-top:20px;
} .logo{ width:150px;
height:150px;
position:absolute;
top:175px;
left:612px;
opacity: 0;
background: url(images/btn_hover.jpg) no-repeat;
transition:1s; } .logo:hover{
opacity:1;
transition:1s; } .countDown{
width:600px;
height: 660px;
background: url(images/miaov_bg.jpg) no-repeat;
margin:0 auto;
position:relative;
} .countDown .timeUp{ position: absolute;
top:93px;
width:100%; } .countDown .timeUp span{ color:white;
font-size:14px;
position:absolute;
display: inline-block; } .countDown .timeUp span:nth-child(1){ left:144px; } .countDown .timeUp span:nth-child(2){ left:286px; } .countDown .timeUp span:nth-child(3){ left:365px; } .countDown .timeUp span:nth-child(4){ left:450px; } .countDown .timeUp input{ height:16px;
line-height:16px;
background: none;
position:absolute;
width:70px;
font-weight:bold;
outline-style: none;
border:0;
text-align:center;
color:#666; } .countDown .timeUp .inputYear{ left:200px;
top:2px;
} .countDown .timeUp .inputMath{ left:300px;
top:3px;
} .countDown .timeUp .inputDay{ left:380px;
top:3px;
} .countDown .timeCenter{ position:absolute;
width:100%;
top:312px;
text-align:center;
color:white;
font-size:20px; }
.countDown .timeCenter span{ color:orange;
} .countDown .timeDown{ position:absolute;
top:388px;
width:100%; } .countDown .timeDown span { position:absolute;
color:orange;
font-size:30px; } .countDown .timeDown span:nth-child(1){ left:100px; } .countDown .timeDown span:nth-child(2){ left:222px; } .countDown .timeDown span:nth-child(3){ left:352px; } .countDown .timeDown span:nth-child(4){ left:458px; } </style>
</head>
<body>
<div class="wrapper"> <div class="countDown" > <p class="timeUp" id="timeUp">
<span id="days">请输入:</span>
<span id="hours">年</span>
<span id="minutes">月</span>
<span id="seconds">日</span>
<input type="text" class="inputYear" value="2018">
<input type="text" class="inputMath" value="12">
<input type="text" class="inputDay" value="22">
</p> <p class="timeCenter" id="timeCenter"> 现在距离 - <span>2018年12月22日</span> - 还剩: </p> <p class="timeDown" id="timeDown"> <span>000</span>
<span>00</span>
<span>00</span>
<span>00</span> </p> </div> <div id="logo" class="logo"></div> </div> <script> var start=document.getElementById("logo"); var timeUp=document.getElementById("timeUp"); var timeCenter=document.getElementById("timeCenter"); var timeDown=document.getElementById("timeDown"); var timer=null; var end=false; delay=1000; start.onclick=function(){ var curFn=arguments.callee;
var timeUp_input=timeUp.getElementsByTagName("input");
var timeDown_span=timeDown.getElementsByTagName("span");
var timeCenter_span= timeCenter.getElementsByTagName("span")[0];
var year=timeUp_input[0].value || 2018;
var month=timeUp_input[1].value || 12;
var day=timeUp_input[2].value || 22; timeCenter_span.innerHTML=year+"年"+month+"月"+day+"日"; var willTime=new Date(year,month-1,day,0,0,0); //var months=[12,1,2,3,4,5,6,7,8,9,10,11]; timer=setTimeout(function(){ var curTime=new Date(); if(curTime>=willTime || willTime<=curTime ){ alert("活动时间已经结束!!!"); for(var i=0,len=timeDown_span.length;i<len;i++){ timeDown_span[i].innerHTML="000"; } end=true; clearTimeout(timer); return; } var milliseconds=willTime.getTime()-curTime.getTime(); var days=milliseconds/1000/3600/24; //天数 var hours=milliseconds/1000/3600%24; //剩余的小时 var minute=milliseconds/1000/60%60; //剩余分钟数 var seconds=milliseconds/1000%60; //剩余秒数 //总结 XXX%什么 剩下的还是XXX
//所以 就需要 分钟%60 剩下的才是分钟 timeDown_span[0].innerHTML=addZero(days);
timeDown_span[1].innerHTML=addZero(hours);
timeDown_span[2].innerHTML=addZero(minute);
timeDown_span[3].innerHTML=addZero(seconds); if(!end){ timer=setTimeout(arguments.callee,delay); } else{ for(var i=0,len=timeDown_span.length;i<len;i++){ timeDown_span[i].innerHTML="000"; }
end=false; } }); }; function addZero(num){ num=parseInt(num);
if(num<100 && num>=10){ return "0"+num;
} else if(num<10){ return "00"+num; } else{ return num; } } </script>
</body>
</html>

不断的调用setTimeout 让时间显示为最先时间

当输入的时间比当前时间小的时候  或者 当前时间比输入时间大的时候 都会不再运行setTimeout了

怎么让链式调用setTimeout停止的更多相关文章

  1. 一个链式调用 setTimeout的例子

    <div> 现在时间是:<input type="text" id="name1" size="16" value=&qu ...

  2. 关于JavaScript中的setTimeout()链式调用和setInterval()探索

    http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/arc ...

  3. jQuery的XX如何实现?——2.show与链式调用

    往期回顾: jQuery的XX如何实现?——1.框架 -------------------------- 源码链接:内附实例代码 jQuery使用许久了,但是有一些API的实现实在想不通.于是抽空看 ...

  4. 学了ES6,还不会Promise的链式调用?🧐

    前言 本文主要讲解promise的链式调用的方法及其最终方案 应用场景 假如开发有个需求是先要请求到第一个数据,然后根据第一个数据再去请求第二个数据,再根据第二个数据去请求第三个数据...一直到最后得 ...

  5. 史上最简单的手写Promise,仅17行代码即可实现Promise链式调用

    Promise的使用相比大家已经孰能生巧了,我这里就不赘述了 先说说我写的Promise的问题吧,无法实现宏任务和微任务里的正确执行(也就是在Promise里面写setTimeout,setInter ...

  6. ES6 Promise 的链式调用

    1.什么是Promise Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息. 2.对象的状态不受外界影响.Promise 对象代表一个异步操作,有三种状态: pending: 初始 ...

  7. 如何写 JS 的链式调用 ---》JS 设计模式《----方法的链式调用

    1.以$ 函数为例.通常返回一个HTML元素或一个元素集合. 代码如下: function $(){ var elements = []; ;i<arguments.length;i++){ v ...

  8. 【Java】子类的链式调用

    记录最近在项目设计中遇到的一个小问题. 前提:有这样两个POJO类,它们都可以通过链式调用的方式来设置其属性值,其中一个类继承了另一个类. 问题:通过链式调用,子类对象访问父类方法后,如何使返回对象仍 ...

  9. hasOwnProperty 递归 简单回调 链式调用

    1.hasOwnProperty 函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false. function Box(){ ...

随机推荐

  1. 深入分析Java Web技术内幕

    深入web请求过程 发起一个http请求的过程就是建立一个socket通信的过程 HTTPClient是一个开源的实现了http请求的工具包 深入分析java I/O的工作机制 深入分析java We ...

  2. 【原创】javascript模板引擎的简单实现

    本来想把之前对artTemplate源码解析的注释放上来分享下,不过隔了一年,找不到了,只好把当时分析模板引擎原理后,自己尝试 写下的模板引擎与大家分享下,留个纪念,记得当时还对比了好几个模板引擎来着 ...

  3. JS 简易控制台插件 [供 博客, 论坛 运行js用]

    今天厚着脸皮来推荐下鄙人写的一个小插件吧.看过我博客的应该都熟悉这个插件了,其实就是这货. 这东西是我去年写的,当时水平也不怎么样,不过好歹还是实现了简单功能.我先简单介绍下这东西什么用吧. 因为在 ...

  4. deeplearning.ai学习LSTM

    一.LSTM架构与公式 这里的a<t>表示的就是原始输出,y<t>表示的就是经过softmax的输出,c<t>相当于状态.u(update)代表是输入门,f代表遗忘 ...

  5. 20165230 ch02 课上测试

    题目一 1.参考附图代码,编写一个程序 "week0201学号.c",判断一下你的电脑是大端还是小端. 2.提交运行结果"学号XXXX的笔记本电脑是X端"的运行 ...

  6. mongodb导出数据csv格式

    mongoexport -d test -c item --type=csv -f salary,city,workYear,companyShortName -o user.csvmongoexpo ...

  7. Oracle中Inventory目录作用以及如何重建此目录 oraInst.loc 文件

    inventory 英 [ˈɪnvəntri] 美 [ˈɪnvəntɔ:ri] n. 清查; 存货清单; 财产目录,财产目录的编制; 存货总值; vt. 盘存; 编制…的目录; 开列…的清单; 总结 ...

  8. php扩展Redis功能

    php扩展Redis功能 1 首先,查看所用php编译版本V6/V9 在phpinfo()中查看 2 下载扩展 地址:https://github.com/nicolasff/phpredis/dow ...

  9. poj2679

    题意:给出一个有向图,每条边有两个属性:一个长度一个费用.费用可能是负数.长度一定是非负的.给出一个起点和一个终点,现要求,从起点走到终点,且从每个点走出时选择的那条边必须是以该点作为起点的边中费用最 ...

  10. MVC Autofac依赖注入

    通过Dll实现全部类的属性注入,该演示实例主要通过多层架构中单一的对象方式来演示,没有采取接口的方式, 新建AutoFacHelper类,如下代码: public class AutoFacHelpe ...