回调函数原理:
函数可以作为一个参数。将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。
回调函数写的位置:
定时器结束的位置。
效果:
代码:
1 <script> 2 function animate(obj, target, callback){ 3 clearInterval(obj.timer); 4 obj.timer = setInterval(function(){ 5 //计算步长值 6 //把步长值改成整数,不要出现小数问题 7 var step = (target - obj.offsetLeft) / 10; 8 step = step > 0 ? Math.ceil(step) : Math.floor(step); 9 if(obj.offsetLeft == target){ 10 // 停止动画本质上是停止定时器 11 clearInterval(obj.timer); 12 if(callback){ 13 //调用函数 14 callback(); 15 } 16 } 17 obj.style.left = obj.offsetLeft + step + 'px'; 18 },10); 19 } 20 var div = document.querySelector('div'); 21 var btn1 = document.querySelector('.btn1'); 22 var btn2 = document.querySelector('.btn2'); 23 //调用函数 24 25 btn1.addEventListener('click', function(){ 26 animate(div, 500); 27 }); 28 btn2.addEventListener('click', function(){ 29 animate(div, 800, function(){ 30 div.style.backgroundColor = 'pink'; 31 }); 32 }); 33 </script>