JS多个DIV变宽

思路:有多个物体运动时,当切换到另外一个时就要把当前物体运动的定时器关闭

运动框架:

1、先关闭当前DIV的定时器 clearInterval(obj.timer)

2、开启当前DIV的定时器obj.timer=setInterval()

2.1、定义物体运动的速度。速度等于目标(形参)减去当前DIV的宽度 obj.offsetWidth

2.2、用三目运算符把速度向上取整Math.ceil()和向下取整Math.floor()

2.3、用if判断,当当前DIV宽度等于目标值(iTarget)就清除当前DIV的定时器clearInterval(obj.timer),否则else就设置DIV的宽度等于当前DIV宽度加上速度运动起来。

 

鼠标移出移入:

3、获取元素

4、for循环历遍所有DIV,给每个DIV添加一个timer定时器(这是自定义属性)

5、添加鼠标指向事件

6、添加鼠标离开事件

 

完整代码:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>多个DIV运动</title>
 6 <style>
 7 div{width:100px;height:50px;background:red;margin:10px;}
 8 </style>
 9 <script>
10 window.onload=function()
11 {
12     aDiv=document.getElementsByTagName('div');
13     
14     for(var i=0;i<aDiv.length;i++)  //循环历遍
15     {
16         aDiv[i].timer=null; //给每个Div添加一个定时器timer,这是自定义属性
17         
18         aDiv[i].onmouseover=function()  //当前DIV鼠标移入就触发运动框架
19         {
20             startMove(this,1000);  //两个实参,this当前DIV,这个this实参会传到obj形参去
21         };
22         aDiv[i].onmouseout=function()
23         {
24             startMove(this,100);    
25         };
26     };
27 };
28 
29 function startMove(obj,iTarget) //两个形参,一个是指当前物体,一个是目标值(就是变宽运动的值)
30 {
31     clearInterval(obj.timer);
32     obj.timer=setInterval(function(){  //定义速度,速度等于目标值(实参)减去当前DIV宽度除10
33         var speed=(iTarget-obj.offsetWidth)/10;  
34         speed=speed>0?Math.ceil(speed):Math.floor(speed);  //用三目运算符,当速度大于0就向上取整,否则就向下取整。
35         
36         if(obj.offsetWidth==iTarget)  //如果当DIV前宽度等于实参传过来的目标值
37         {
38             clearInterval(obj.timer);  //就清除当前DIV的定时器,就能返回滚
39         }
40         else
41         {
42             obj.style.width=obj.offsetWidth+speed+'px';  //如果当前DIV前宽度不等于实参传过来的目标值,就把当前DIV的宽度设置为DIV宽度加速度
43         }
44     },30);
45 };
46 </script>
47 </head>
48 
49 <body>
50 <div></div>
51 <div></div>
52 <div></div>
53 </body>
54 </html>

 

posted @ 2013-03-15 16:45  yexingwen  阅读(1409)  评论(0编辑  收藏  举报