定时器在JS中的作用:

1)制作动画、时钟、倒计时

2)异步操作

3)函数缓冲与节流

定时器类型:

1)setTimeout 只执行一次的定时器

2)clearTimeout 关闭只执行一次的定时器

3)setInterval 反复执行的定时器

4)clearInterval 关闭反复执行的定时器

demo:

1)setTimeout(自制弹窗)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css"> .pop_con{
/*暂时隐藏*/
display: none;
} .pop{
width: 300px;
height:200px;
background-color: #fff;
border:1px solid #000; /*使框居中*/
position: fixed;
left:50%;
top:50%;
margin-left:-150px;
margin-top: -100px;
/*让弹窗覆盖在mask上面*/
z-index:9999; } .mask{
position: fixed;
width:100%;
height: 100%;
background-color: #000;
left:0;
top:0;
/*设置透明度*/
opacity:0.3;
/*ie兼容的透明度*/
filter:alpha(opacity=0.3);
/*让弹窗覆盖在mask上面*/
z-index:9990;
}
</style> <script type="text/javascript">
window.onload = function () { var oPop = document.getElementById('pop');
<!--设置定时器-->
setTimeout(showpop,2000);
function showpop() {
oPop.style.display = 'block';
}
}
</script>
</head>
<body>
<h1>首页标题</h1>
<p>页面内容</p>
<!--自制弹框-->
<div class="pop_con" id="pop">
<div class="pop">
<h3>提示信息!</h3>
</div>
<div class="mask"></div>
</div>
</body>
</html>

2)setInterval

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css"> .box{
width:100px;
height:100px;
background-color: gold;
position: fixed;
left:20px;
top:20px;
} </style>
<script type="text/javascript"> window.onload = function () {
var oBox = document.getElementById('box');
var left = 20;
var timer = setInterval(function () {
left+=2;
oBox.style.left = left + 'px';
//按照一定条件关闭定时器
if(left>700){
clearInterval(timer);
}
},30)
} </script>
</head>
<body>
<div class="box" id="box"></div>
</body>
</html>

3)定时器制作时钟

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>定时器制作时钟</title>
<script type="text/javascript">
window.onload = function () {
var oDiv = document.getElementById('div1');
function timego() {
//实例化一个对象Date
var now = new Date();
var year = now.getFullYear();
//这里要注意,这里得到的月份是0~11月,所以要+1
var month = now.getMonth()+1;
var date = now.getDate();
//星期:星期天是一个礼拜的第一天,week=0
var week = now.getDay();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
//标签里面的内容:innerHTML
oDiv.innerHTML = '当前时间:'+year+'年'+month+'月'+date+'日'+
' '+toweek(week)+" "+tudou(hour) +':'+ tudou(minute)+":"+ tudou(second);
}
//一秒钟刷新一次,但是这样的话,页面的第一秒中是没有内容的,所以加一个timego()
timego();
setInterval(timego,1000);
}
//将数字返回成汉字
function toweek(num){ switch(num){
case 0:
return '星期天';
case 1:
return '星期一';
case 2:
return '星期二';
case 3:
return '星期三';
case 4:
return '星期四';
case 5:
return '星期五';
case 6:
return '星期六';
}
}
function tudou(num) { if(num<10){
return '0'+ num;
}
else{
return num;
}
}
</script>
</head>
<body>
<div class="div1" id="div1"></div>
</body>
</html>

4)定时器制作倒计时

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>定时器制作倒计时</title>
<script type="text/javascript">
window.onload = function () {
var oDiv = document.getElementById('div1');
//真实的时间是要从服务器获取的,不能从客户端获取
function tiimeleft(){
var now = new Date();
var future = new Date(2018,5,19,15,21,0);
//ms转为s
var lefts = parseInt((future-now)/1000);
var days = parseInt(lefts/86400);
var hours = parseInt((lefts%86400)/3600);
var minutes = parseInt(((lefts%86400)%3600)/60);
var seconds = parseInt(lefts%60);
//这是一个有底线的倒计时
if(lefts<=0){
window.location.href = 'http://www.baidu.com';
}
oDiv.innerHTML = '距离2018年6月22日24时还有'+days+'天'+tudou(hours)+'时'
+tudou(minutes)+'分'+tudou(seconds)+'秒';
}
tiimeleft();
setInterval(tiimeleft,1000);
};
// 将数字返回成汉字
function tudou(num) {
if(num<10){
return '0'+ num;
}
else{
return num;
}
}
</script>
</head>
<body>
<div class="div1" id="div1"></div>
</body>
</html>

最新文章

  1. 如何远程断点调试本地localhost项目
  2. STRUTS2 标签 循环次数
  3. Xcode 7 ImageNamed 方法加载jpg图片失败
  4. 关于AS3获取当前URL和浏览器信息
  5. Mysql的 时间戳转换 和 c# 的时间戳转换 (以秒来进行转换,非毫秒,主要是mysql不能存毫秒)
  6. linux安装Vmware的时候出现“Could not open /dev/vmmon”
  7. Qt XML读取写入操作
  8. 基于perl面向对象开发的微信机器人
  9. 接口自动化测试:参数化封装(excel文件读取)
  10. Effective c++ Item 28 不要返回对象内部数据(internals)的句柄(handles)
  11. 【转载】stm32的GPIO八种工作模式
  12. Python3 数字(Number)
  13. @Controller @RestController
  14. 在web项目启动时,执行某个方法
  15. ANDROID说说对MENU的理解
  16. JAVA中接口与抽象类
  17. js函数集
  18. JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成功安装Mysql的方法
  19. MongoDB的Invalid credentials for database
  20. Python3基础 json.loads 解析json格式的数据,得到一个字典

热门文章

  1. 2006年清华:N的阶乘
  2. netty中的Channel、ChannelPipeline
  3. JAVA 1.5 并发之 ReentrantLock
  4. Spring Boot 专栏
  5. CentOS安装配置radius服务器
  6. C语言学习笔记--C语言中的逗号表达式
  7. TCP的三次握手和四次挥手,为什么?
  8. Hive中SELECT TOP N的方法(order by与sort by的区别)
  9. (转载)Windows无法安装到GPT分区形式磁盘解决办法
  10. Qt Console Application