L6-js定时器的应用

今天我们来说说定时器,其实定时器在很多程序中是很常用的,比如我们看到的一些网站上的滚动图片,鼠标移动到QQ头像上的效果,还有网站上时间表等等。接下来我们就围绕这三个定时器的经典应用来了解定时器。

首先,我们讲到的是如果开启定时器

  setInterval  间隔型,应用:无缝滚动、网站时钟

  setTimeout  延时型,应用:QQ头像应用

停止定时器

  clearInterval

  clearTimeout

两种定时器的区别:

  简单的说,setInterval会在设定的时间自动重复,setTimeout不会重复而具有延时性

接下来,就是我们的应用:

1、数码时钟

效果思路

  获取系统时间

    Date对象

    getHours、getMinutes、getSeconds

  显示系统时间

    字符串连接

    空位补零

  设置图片

    charAt方法   //   能解决兼容性问题

html

  <img scr = "img/1.png"/><img src = "img/2.png"/>:<img src = "img/3.png"/><img src = "img/4.png"/>:<img src = "img/5.png"/><img src = "img/6.png"/>

js

function toDou(num){  //  空位补零函数

  if(num<10){

    return "0" + num;

  }

  else{

    return "" + num;

  }

}

window.onload = function(){

var aImg = document.getElementsByTagName('img');

function tick = function(){

//  获取系统时间

var oDate = new Date();

//  字符串连接

var oTime = toDou(oDate.getHours())+toDou(oDate.getMinutes())+toDou(oDate.getSeconds())

for(var i = 0; i < aImg.length; i++){

  // 设置图片

  aImg[i] .src = "img/"+oTime[i]+"png";

  }

  }

setInterval(tick,1000);  //  1000ms = 1s

tick();  //  防止页面刷新时,显示 00:00:00

}

2、延时提示框

效果思路

  原来方法

    移入显示,移除隐藏

  移出延时隐藏

    移入下面的Div后,还是隐藏了

  简化代码

    合并两个相同的onmouseover和onmouseout

html

<div id = "Icon" style = "50px; height:50px; background:green; float:left; margin-right:20px;"></div>

<div id="Icondetail" style = "200px; height:150px; background:#ccc; float:left; display:none" ></div>

js

var oDiv1 = document.getElementById("Icon");

var oDiv2 = document.getElementById("Icondetails");

var timer = null;

oDiv2.onmouseover = oDiv1.onmouseover = functiton(){

  clearTimerout(timer);

  oDiv2.style.display = 'block';

}

oDiv2.onmouseout =oDiv1.onmouseout = function(){

  timer = setTimeout(function(){

    oDiv2.style.display = 'none';

  },500);

}

3、无缝滚动——基础

效果思路

  物体运动基础

  让Div移动起来

  offsetLeft的作用

  用定时器让物体连续移动

<div id= "div1" style = "200px; height:200px; background:red"></div>

js

var oDiv = document.geElementById("div1");

setInterval(function(){

  oDiv.style.left = oDiv.offsetLeft + 2 + "px";

},30);

效果原理

  让ul一直向左移动

  复制li

    innerHTML 和 +=

  修改ul的width

  滚动过界后,重设位置(判断过界)

扩展

  改变滚动方向

    修改speed

    修改判断条件

  鼠标移入暂停

    移入关闭定时器

    移除重新设置定时器

<div id = "div1" >

  <ul>

<li><img src = "img/1.jpg"/></li>

<li><img src = "img/2.jpg"/></li>

<li><img src = "img/3.jpg"/></li>

<li><img src = "img/4.jpg"/></li>

  </ul>

</div>

<a href = "javascript:;">向左走</a>

<a href = "javascript:;">向右走</a>

*{margin:0; padding:0;}

#div1 {718px; height:108px; border:1px solid #000; position:relative; overfloat:hidden;} 

#div1 ul { position:absolute; top:0; left:0}

#div1 ul li{178px; height:108px; list-style:none;}

var oDiv = document.getElementById("div1");

var oUl = oDiv.getElementsByTagName("ul");

var aLi = oUl.getElementsByTagName("li");

var speed= null;

//复制li

oUl.innerHTML += oUl.innerHTML;

//修改ul的width

oUl.style.width = aLi[0].width * aLi.length + "px";

function move(){

if(oUl.offsetLeft<- oUl.offsetWidth/2){

  oUl.style.left = "0";

}

if(oUl.offsetLeft>0){

  oUl.style.left = - oUl.offsetWidth/2 + "px";

}

oUl.style.left = oUl.offsetLeft - speed + "px";

}

var timer = setInterval(move,30);

扩展:

//鼠标移入暂停,移出移动

oDiv.onmouseover = function(){

  clearInterval(timer);

}

oDiv.onmouseout = function(){

  setInterval(move,30);

}

//改变滚动方向

document.getElementsByTagName("a")[0].onclick = function(){

  speed = -2;   //  向左移动

}

document.getElementsByTagName("a")[1].onclick = function(){

  speed = 2;   //  向右移动

}

总结:主要是两个定时器的开启和关闭的应用。同时,还讲到的offsetLeft获取对象的左边距(包含margin-left);还有在写程序中主要变量的使用,运用变量来处理一些需要变的东西,比如这里应用到的speed来控制的方向;兼容性问题:charAt()方法:返回指定位置的字符。

原文地址:https://www.cnblogs.com/linyongli/p/5307985.html