js 定时器

window对象中处理时间和间隔的函数有4个:
  • setTimeout()函数、clearTimeout()函数
  • setInterval()函数、clearInterval()函数

1.1 延时定时器

setTimeout() :定义延时定时器,在指定的时间后调用函数。
语法:
  • setTimeout(fun,time);
    其中参数 fun :函数体或函数名 ;time 指定时间,单位为毫秒。其返回值有一个 id, 代表当前的这
    setTimeout() 函数。
  • clearTimeout(id):清除延时定时器,取消指定idsetTimeout函数。
示范代码:
setTimeout(function () {
document.write("隔3秒后触发");
}, 3000) //在3秒后输出
setTimeout(fun1, 5000); //在5秒后输出
function fun1() {
document.write("函数名的方式5秒后触发");
}

1.2 间隔型定时器

setInterval() :定义间隔型定时器 , 在间隔指定的事件后重复调用函数。
语法:
  • setInterval(fun1,time)                                                                                                        fun:函数体或函数名,time指定的时间,单位为毫秒。会返回一个值id
  • clearInterval(id):清除间隔型定时器                                                                                        参数idsetInterval()函数返回的值,根据这个值可以停止返回值为idsetInterval()的执行。
示范代码:
var h = setInterval(function () {
document.write("3秒输出一次<br/>");
}, 3000);

注意,JavaScript是单线程的,因此,这个定时函数实际上是通过插入执行队列的方式来实现。

1.3 实例

动态时间案例 1
由于涉及到时间的显示问题,所以要用到日期对象 Date ,还有时间在不停地走,因此需要不断地调用函数,所以要用到Windows 的定时器 setInterval( ) 方法。
<script>
function disptime(){
var today = new Date(); //获得当前时间
var hh = today.getHours(); //获得小时、分钟、秒
var mm = today.getMinutes();
var ss = today.getSeconds();
document.getElementById("myclock").innerHTML=hh+":"+mm+":"+ss;
}
window.setInterval(disptime,1000);
</script>
动态时间案例 2
<!-- 这个div用来显示动态时间 -->
<div id="timeDiv">
<!-- 我们不能给这个div里面写内容,因为时间是不固定,需要通过JS来设置 -->
</div>
<script>
//给页面元素设置文本内容,那么肯定要获取到元素节点,然后通过元素节点.innerText来设置文本内容
//获取到timeDiv元素节点
var timeDiv = document.getElementById("timeDiv");
//这个函数是用来给timeDiv设置字符串
function setTimeStr() {
//获取到系统时间,然后给其设置内容
var time = new Date();
//获取到年月日
var year = time.getFullYear();
var month = time.getMonth()+1;
var date = time.getDate();
//获取时分秒
var hour = time.getHours();
//ampStr用来表示上午或下午
var apmStr = hour >= 12 ? "下午" : "上午";
var minute = time.getMinutes();
var second = time.getSeconds();
timeDiv.innerText = "今天
是:"+year+"年"+getTwo(month)+"月"+getTwo(date)+"日,现在时间是:"+apmStr+" "
+getTwo(hour)+":"+getTwo(minute)+":"+getTwo(second);
}
//让timeDiv里面的内容,每一秒改变一次
setInterval(setTimeStr,1000);
//为了解决第一秒没有显示时间的小bug,可以提前调用一次
setTimeStr();
//月日时分秒可能是个位数,那么如果是个位数,我们需要对齐进行格式化处理
//如果小于10,那么给其拼字符串"0"
function getTwo(t){ //t表示形参,回头可以把月 日 时分秒作为实参传递进来进行处理
return t < 10 ? "0"+t : t;
}
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值