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却被 ...
随机推荐
- javascript数据类型判断
javascript基本数据类型:原始类型 和 引用类型 原始类型(简单数据类型):String,Number,Boolean,Undefined,Null,Symbol(ES6新增) 引用类型( ...
- Ubuntu/mint清理系统垃圾
Ubuntu Linux与Windows系统不同,Ubuntu Linux不会产生无用垃圾文件,但是在升级缓存中,Ubuntu Linux不会自动删除这些文件,今天就来说说这些垃圾文件清理方法. 1 ...
- eclipse中设置文件默认打开方式
- [Think In Java]基础拾遗4 - 并发
第21章节 并发 1. 定义任务 任务:任务就是一个执行线程要执行的一段代码.(在C语言中就是函数指针指向的某个地址开始的一段代码) [记忆误区]:任务不是线程,线程是用来执行任务的.即任务由线程驱动 ...
- HttpClient 4.3 使用
httpclient的api变化很快,本篇随笔记录自己使用4.3.6版本时所做的设置.版本虽然不是最新,但达到了目的就行. maven依赖: <dependency> <groupI ...
- PHP处理海量样本相似度聚类算法
catalogue . TF-IDF . 基于空间向量的余弦算法 . 最长公共子序列 . 最小编辑距离算法 . similar_text . local sensitive hash 局部非敏感哈希 ...
- 在linux终端远程登陆linux服务器
在linux终端远程登陆linux服务器 原来在Linux终端远程登陆linux服务器是那么的容易,如果的服务器用户名是abc(也可以是root),只需要在终端输入: 然后电脑会提示输入密码就登录 ...
- nginx 和 IIS 实现负载均衡
Nginx的作用和优点,这里不必多说,今天主要是nginx负载均衡实验,把做的步骤记录下来,作为一个学习笔记吧,也可以给大家做下参考. 1.Nginx安装 1.下载地址:http://nginx.or ...
- 探索Aspnetcore+mysql+efcore
摘要 之前尝试了,新建asp.net core站点,那么如何和mysql建立连接,如果操作mysql?本篇将尝试使用EntityFrameworkCore进行mysql的操作. 一个例子 首先新建一个 ...
- Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended
问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...