<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> ul,li{ list-style: none; } ul li{ width: 200px; height: 100px; background: red; margin-bottom: 20px; border: 4px solid #000; font-size: 8px; } </style> <script type="text/javascript"> window.onload=function(){ var aLi=document.getElementsByTagName("li"); for (var i= 0; i<aLi.length;i++) { aLi[i].timer=null; aLi[i].onmouseover=function(){ startMove(this,400,'width'); startMove(this,200,'height'); } aLi[i].onmouseout=function(){ startMove(this,200,'width'); startMove(this,100,'height'); } } } function startMove(obj,iTarget,attr){ clearInterval(obj.timer); obj.timer=setInterval(function(){ var speed=(iTarget-parseInt(getStyle(obj,attr)))/10; speed=speed>0?Math.ceil(speed):Math.floor(speed); if(parseInt(getStyle(obj,attr))==iTarget){clearInterval(obj.timer);} else{obj.style[attr]=parseInt(getStyle(obj,attr))+speed+'px'; } },20); } function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; } else{ return getComputedStyle(obj,false)[attr]; } } </script> </head> <body> <ul> <li></li> <li></li> <li></li> </ul> </body> </html>
这样为什么就跳过了第一个函数直接执行第二个函数了?
因为只有一个定时器。你调用两次。。。
...因为根据函数执行顺序后面一个函数会覆盖前面一个函数啊。。。。