首页 > 代码库 > 【JS学习】定时器
【JS学习】定时器
一、定时器的作用
(1)开启定时器
setInterval 间隔型
setTimeout 延时型
两种定时器的区别
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>定时器</title>
<script>
function show()
{
alert(‘a‘);
};
//setInterval(show,1000);//每隔1000毫秒执行一次show函数
setTimeout(show,1000);//延迟1000毫秒之后执行show函数
</script>
</head>
<body>
</body>
</html>
(2)停止定时器
clearInterval
clearTimeout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>定时器的开启与关闭</title>
<script>
window.onload = function ()
{
var oBtn1=document.getElementById(‘btn1‘);
var oBtn2=document.getElementById(‘btn2‘);
var timer=null;
oBtn1.onclick = function ()
{
timer=setInterval(function()
{
alert(‘a‘);
},1000);
};
oBtn2.onclick = function ()
{
clearInterval(timer);
};
};
</script>
</head>
<body>
<input id="btn1" type="button" value="http://www.mamicode.com/开启" />
<input id="btn2" type="button" value="http://www.mamicode.com/关闭" />
</body>
</html>
二、数码时钟
(1)效果思路
(2)获取系统时间
Data对象
gerHours、GetMinutes、getSeconds
(3)显示系统时间
字符串连接
空位补零
(4)设置图片路径
charAt方法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>数码时钟(兼容模式)</title>
<script>
//但是不兼容IE7
function toDou(n)
{
if(n<10)
{
return ‘0‘+n;//第一位加上0,保证取出来的时间数字一直是2位数的字符串,比如01
}
else
{
return ‘‘+n;//为什么要加空字符串‘‘,是为了让返回的2位数字也是以字符串的形式返回的
}
};
window.onload = function ()
{
var aImg=document.getElementsByTagName(‘img‘);
//var str=‘013221‘;//这个时间是写死的
//开启定时器,每过一秒钟更新一次图片
function tick()
{
var oDate=new Date();
var str=toDou(oDate.getHours())+toDou(oDate.getMinutes())+toDou(oDate.getSeconds());
for(var i=0;i<aImg.length;i++)
{
aImg[i].src=http://www.mamicode.com/‘img/‘+str.charAt(i)+‘.png‘;//使用charAt(i)使各种浏览器保持兼容!
}
};
setInterval(tick,1000);
tick();//将tick()函数先在onload里面执行一遍,这样刚打开页面时不会有全是0的一瞬间延迟
};
</script>
</head>
<body style="background:black; color:white; font-size:50px;">
<img src="http://www.mamicode.com/img/0.png" />
<img src="http://www.mamicode.com/img/0.png" />
:
<img src="http://www.mamicode.com/img/0.png" />
<img src="http://www.mamicode.com/img/0.png" />
:
<img src="http://www.mamicode.com/img/0.png" />
<img src="http://www.mamicode.com/img/0.png" />
</body>
</html>
三、Date对象的其他方法
年getFullYear
月getMonth()
日getDate()
星期getDay()
四、延时提示框
(1)效果演示
(2)原来的方法
移入显示,移出隐藏
(3)移出延时隐藏
移入下面的Div后,还是隐藏了
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>延时提示框</title>
<style>
div{
margin:10px;
float:left;
}
#div1{
width:50px;
height:50px;
background:red;
}
#div2{
width:250px;
height:180px;
background:#CCC;
display:none;
}
</style>
<script>
window.onload = function ()
{
var oDiv1=document.getElementById(‘div1‘);
var oDiv2=document.getElementById(‘div2‘);
var timer=null;
oDiv1.onmouseover=function()
{
clearTimeout(timer);//如果不事先清除div2的timeout这个定时炸弹,当鼠标从div2移入div1时,div2会消失掉
oDiv2.style.display=‘block‘;
};
oDiv1.onmouseout=function()
{
timer=setTimeout(function()
{
oDiv2.style.display=‘none‘;
},500);
};
//当鼠标移到Div2的时候,先把定时器关闭
oDiv2.onmouseover=function()
{
clearTimeout(timer);
};
oDiv2.onmouseout=function()
{
timer=setTimeout(function()
{
oDiv2.style.display=‘none‘;
},500);
};
};
</script>
</head>
<body>
<div id="div1">
</div>
<div id="div2">
</div>
</body>
</html>
(4)简化代码
合并两个相同的mouseover和mouseout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>延时提示框合并代码</title>
<style>
div{
margin:10px;
float:left;
}
#div1{
width:50px;
height:50px;
background:red;
}
#div2{
width:250px;
height:180px;
background:#CCC;
display:none;
}
</style>
<script>
window.onload = function ()
{
var oDiv1=document.getElementById(‘div1‘);
var oDiv2=document.getElementById(‘div2‘);
var timer=null;
oDiv2.onmouseover=oDiv1.onmouseover=function()
{
clearTimeout(timer);//如果不事先清除div2的timeout这个定时炸弹,当鼠标从div2移入div1时,div2会消失掉
oDiv2.style.display=‘block‘;
};
oDiv2.onmouseout=oDiv1.onmouseout=function()
{
timer=setTimeout(function()
{
oDiv2.style.display=‘none‘;
},500);
};
};
</script>
</head>
<body>
<div id="div1">
</div>
<div id="div2">
</div>
</body>
</html>
【JS学习】定时器