window对象属性
主要属性:
document:对Document对象的只读引用。
history:对History对象的只读引用。
location:对于窗口或框架的Location对象。
主要方法:
setInterval()
setInterval(参数1,参数2):定时调用。 可以将一个函数,每隔一段时间执行一次。
参数:
参数1:回调函数,该函数会每隔一段时间被调用一次。
参数2:每次调用间隔的时间,单位是毫秒。
返回值:
返回一个Number类型的数据,这个数字用来作为定时器的唯一标识。
clearInterval()
clearInterval()可以用来关闭一个定时器。方法中需要一个定时器的标识作为参数,这样将关闭对应的定时器。
var num = 1;
var timer = setInterval()(function(){
count.innerHTML = num++;
if(num ==11){
clearInterval(timer);
}
},1000)
注意:
1、clearInterval()可以接收任意参数,如果参数是一个有效的定时器的标识,则停止对应的定时器。如果参数不是一个有效的标识,则什么也不做。
2、开启定时器之前,需要将当前元素上的其他定时器关闭,这样可避免多个定时器触发。
setTimeout()
延时调用,延时调用一个函数不会马上执行,而是隔一段时间以后再执行,而且只会执行一次。
var timer = setTimeout(function(){console.log(num++);},3000);
clearTimeout()
关闭延时调用。
clearTimeout(timer);
延时调用和定时调用:
1、定时调用会执行多次,而延时调用只会执行一次。
2、延时调用和定时调用实际上是可以相互代替的,在开发中可以根据自己需要去选择。
案例:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>优化后,添加了定时器的"键盘移动div"</title>
<style>
.box1 {
width: 100px;
height: 100px;
background-color: aquamarine;
position: absolute;
}
</style>
<script>
window.onload = function () {
var box1 = document.getElementsByClassName("box1")[0];
document.onkeydown = function (event) {
speed = 10;
// 按下ctrl后速度加快
if (event.ctrlKey) {
speed = 100;
}
flag = event.keyCode;
}
setInterval(function () {
switch (flag) {
// 向左
case 37:
if (box1.offsetLeft >= 18) {
box1.style.left = box1.offsetLeft - speed + "px";
}
// 碰到左上边界禁止div变大或变小
else { box1.style.left = box1.offsetLeft + "px"; }
break;
// 向上
case 38:
if (box1.offsetTop >= 18) {
box1.style.top = box1.offsetTop - speed + "px";
}
// 碰到左上边界禁止div变大或变小
else { box1.style.top = box1.offsetTop + "px"; }
break;
// 向右
case 39:
box1.style.left = box1.offsetLeft + speed + "px"; break;
// 向下
case 40:
box1.style.top = box1.offsetTop + speed + "px"; break;
}
}, 30);
document.onkeyup = function(){
flag = 0;
}
}
</script>
</head>
<body>
<div class="box1"></div>
</body>
</html>