定时器的应用
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <!--引入外部文件 8 <script type="text/javascript" src="js/tools.js"></script> 9 --> 10 <script type="text/javascript"> 11 //获取元素样式 12 function getStyle(obj,name) 13 { 14 if(window.getComputedStyle) 15 return getComputedStyle(obj,null)[name]; 16 else 17 return obj.currrntStyle[name]; 18 } 19 20 //var timer; 21 /* 22 目前我们的定时器的标识由全局变量timer保存, 23 所有的执行正在执行的定时器都在这个变量中保存 24 */ 25 function move(obj,attr,target,speed,callback) 26 { 27 /* 28 创建一个可以执行简单动画的函数 29 参数 30 obj 要执行动画的对象 31 attr 要执行动画的样式 比如 height top width left 32 target 执行动画的目标位置 33 speed 移动的速度 34 callback 回调函数,这个函数将会在动画执行完毕以后执行 35 36 在开启一个定时器前,如果前面已经开过定时器了把已有的定时器先关闭, 37 为了保证同一时间只能开启一个定时器,使方块速度恒定 38 */ 39 clearInterval(obj.timer); 40 //获取元素目前的位置 41 var current = parseInt(getStyle(obj,attr)); 42 if(current>target) 43 speed=-speed; 44 //向执行动画的对象中添加一个timer属性,用来保存它自己的定时器的标识 45 obj.timer=setInterval(function(){ 46 var oldValue=parseInt(getStyle(obj,attr)); 47 var newValue=oldValue+speed; 48 if(speed<0&&newValue<target || speed>0&&newValue>target) 49 newValue=target; 50 obj.style[attr]=newValue+"px"; 51 52 if(newValue==target){ 53 clearInterval(obj.timer); 54 //动画执行完毕后,调用回调函数,只会调用一次,判断如果有callback就执行 55 callback && callback(); 56 } 57 },10); 58 } 59 window.onload=function() 60 { 61 var box1=document.getElementById("box1"); 62 var button1=document.getElementById("button1"); 63 var timer; 64 button1.onclick=function(){ 65 move(box1,"left",500,6); 66 }; 67 68 var button2=document.getElementById("button2"); 69 70 button2.onclick=function(){ 71 move(box1,"left",0,5); 72 }; 73 var box2=document.getElementById("box2"); 74 var button3=document.getElementById("button3"); 75 button3.onclick=function(){ 76 move(box2,"left",500,10); 77 }; 78 var button4=document.getElementById("button4"); 79 button4.onclick=function(){ 80 move(box2,"height",500,10); 81 move(box1,"width",500,10,function(){ 82 alert("动画执行完毕~\(≧▽≦)/~啦啦啦!!!"); 83 }); 84 }; 85 }; 86 </script> 87 <style type="text/css"> 88 *{ 89 margin:0px; 90 padding:0px; 91 } 92 #box1{ 93 width:100px; 94 height:100px; 95 background-color:skyblue; 96 position:absolute; 97 //IE没有指定的值 返回auto 其他浏览器返回0 98 left:0px; 99 } 100 #box2{ 101 width:100px; 102 height:100px; 103 background-color:yellow; 104 position:absolute; 105 left:0px; 106 top:200px; 107 } 108 </style> 109 <body> 110 <button id="button1">点击按钮以后box1向右移动</button> 111 <button id="button2">点击按钮以后box1向左移动</button> 112 <button id="button3">点击按钮以后box2向右移动</button> 113 <button id="button4">测试按钮</button> 114 <br><br> 115 <div id="box1"></div> 116 <div id="box2"></div> 117 <div style="width:0px;height:1000px;border-left:1px black solid; 118 position:absolute;top:0px;left:500px;"></div> 119 </body> 120 </html>