js 定时器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<span id="time1"></span>
<br>
<button id="aStop">第一个停</button><button id="aBegain">第一个开</button>
<br>
<br>
<br>
<div id="time2"></div><button id="bStop">第二个停</button><button id="bBegain">第二个开</button>
</body>
<script type="text/javascript">
function Time(option){
this.father = document.getElementById(option.father);
this.allTime = option.allTime || 0;
this.hours = option.hours || 0;
this.strH = option.strH || "时";
this.mins = option.mins || 0;
this.strM = option.strM || "分";
this.seconds = option.seconds || 0;
this.strS = option.strS || "秒";
this.htmlV = null;
this.t = null;
this.timeStr = null;
this.init();
}
Time.prototype = {
init:function(){
this.mune();
this.setI();
},
mune:function(){
if(this.allTime != 0){
this.hours = Math.floor(this.allTime / (60*60));
this.mins = Math.floor(this.allTime / 60);
this.seconds = this.allTime % 60;
}
},
setI:function(){
var self = this;
this.t = setInterval(function(){
self.father.innerHTML = self.hours +self.strH + self.mins+self.strM + self.seconds +self.strS;
self.allTime = self.hours*60*60 + self.mins *60 +self.seconds;
if(self.allTime == 0){
clearInterval(self.t);
self.father.innerHTML = "时间已经过期"
return;
}
--self.seconds;
if(self.seconds < 0){
self.seconds = 59;
--self.mins;
if(self.mins < 0){
self.mins = 59;
--self.hours
if(self.hours == 0){
self.hours = 0;
}
}
}
if(self.allTime == 0){
clearInterval(self.t);
self.father.innerHTML = "计时结束";
} },1000)
}
}
window.onload = function(){
var a = null; //全局变量
a = new Time({
father:"time1",
allTime:153,
})
var time = null; //保存当前停止的时间\
var stop = false; document.getElementById("aStop").onclick = function(){
clearInterval(a.t);
stop = true;
console.log(a.allTime) //停止时,所剩的总秒数
time = a.allTime;
}
document.getElementById("aBegain").onclick = function(){
console.log(stop)
if(!stop){ //判断当前倒计时是否停止,如果没停止则不执行
return;
}
if(a.allTime <= 0){
return;
}
a = new Time({ //重新给启动定时器
father:"time1",
allTime:time,
})
stop = false;
}
/*------------a----f分割线-----b---------------*/ var b = null;
b = new Time({
father:"time2",
hours:1, //尽量传总秒数
mins:0,
seconds:2,
})
var bTime = null;
var Bstop = false;
document.getElementById("bStop").onclick = function(){
clearInterval(b.t)
Bstop = true;
bTime = b.allTime;
}
document.getElementById("bBegain").onclick = function(){
if(!Bstop){
return;
}
if(a.allTime <= 0){
return;
}
b = new Time({ //重新给启动定时器
father:"time2",
allTime:bTime,
})
Bstop = false;
}
}
</script>
</html>
js 定时器的更多相关文章
- js定时器的使用(实例讲解)
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);2.循环定 ...
- 移动Web与js定时器暂停或不准确计时的问题解决
PC 上的 Firefox.Chrome 和 Safari 等浏览器,都会自动把未激活页面中的 JavaScript 定时器(setTimeout.setInterval)间隔最小值改为 1 秒以上: ...
- js定时器 特定时间执行某段程序的例子
定时器想必大家并不陌生吧,在本文为大家详细介绍下js中是如何实现定时器的,具体原理及代码如下. 例子: $(function(){ var handler = function(){ //www.jb ...
- js定时器setInterval()与setTimeout()
js定时器setInterval()与setTimeout() 1.setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setT ...
- C#-WebForm JS定时器
JS定时器: 1.window.setTimeout(function(){},3000) 延迟3秒执行 2.window.setInterval(function(){},3000) 也叫重复器,每 ...
- Vue清除所有JS定时器
Vue清除所有JS定时器 在webpack + vue 的项目中如何在页面跳转的时候清除所有的定时器 JS定时器会有一个返回值(数字),通过这个返回值我们可以找到这个定时器 在vue项目中可以使用路由 ...
- js定时器关闭,js定时器停止,一次关闭所有正在运行的定时器,自定义函数clearIntervals()一次关闭所有正在运行的定时器
js定时器关闭,一次关闭所有正在运行的定时器,自定义函数clearIntervals()一次关闭所有正在运行的定时器,原理:利用数组存储定时器id,然后遍历数组,关闭定时器 附上页面的截图,代码在截图 ...
- JS定时器做物体运动
JS定时器是函数 setInterval(函数体/函数名 , 时间) 清楚定时器 clearInterval(函数) 时间单位(毫秒) 1000毫秒 = 1秒 首先我们要知道用JS定时器能干什么? ...
- JS 定时器的4种写法及介绍
JS提供了一些原生方法来实现延时去执行某一段代码,下面来简单介绍一下setTiemout.setInterval.setImmediate.requestAnimationFrame. 一.什么是定时 ...
- js定时器 离开当前页面任然执行的问题
今天在博客上看到有人问 js定时器-----离开当前页面原本匀速运动的div加速了,回到页面若干时间恢复匀速??? 他是js定时器控制一个盒子做旋转动画 离开页面后js还在执行 但是盒子这个dom却被 ...
随机推荐
- 1122从业务优化MYSQL
http://blog.itpub.net/22664653/viewspace-2079576/ 开发反馈一个表的数据大小已经130G,对物理存储空间有影响,且不容易做数据库ddl变更.咨询了开发相 ...
- 用Jedis连接Redis
jedis中的方法名,和Redis的命令几乎一样 1.jar包,作为测试只需要一个jar 2.代码 package com; import java.util.HashMap; import java ...
- git远程仓库
git远程仓库: 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据放到一台其他开发人员能够连接的服务器上. 添加远程仓库: gi ...
- Log4j 简单应用
#输出日志的包路径log4j.logger.com=DEBUG,FILE log4j.rootLogger=WARN,stdout #控制台日志 log4j.appender.stdout=org.a ...
- js鼠标事件大全
一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...
- CentOS 6.5安装在VMWare中Bridge模式下网卡eth0不能自动激活的问题
VMWare 12.5.2 CentOS 6.5 basic VMWare网卡配置选择Bridge方式 问题: 默认情况下ifconfig命令只能看到网络设备lo,看不到eth0,也没有分配合理的IP ...
- Java基础-重写System.out.println方法
PrintStream myStream = new PrintStream(System.out) { @Override public void println(String x) { super ...
- 为什么npm install在安装时会多安装很多依赖包
比如我安装gulp时,会多出很多无用的包,如下图: 经过查询,原来是npm升级了导致的,在npm3.0以上的版本,包的依赖不再安装在每个架包的node_modules文件夹内,而是安装在顶层的node ...
- Bzoj3144 [Hnoi2013]切糕
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1494 Solved: 818 Description Input 第一行是三个正整数P,Q,R,表 ...
- 这可能是由于服务终结点绑定未使用 HTTP 协议造成的 .这还可能是由于服务器中止了 HTTP 请求上下文
一个很简单的WCF报这个异常,才发现是 Response的类无法被序列化 因为在Response类里有一个枚举 StatusType,而系统的枚举值是 从0-5,但是数据库里多了一个值为6的记录 这样 ...