詳細代碼函數
<body> <input type="button" value="移動到400px" id="btn1"> <input type="button" value="移動到800px" id="btn2"> <div id="box"></div> <script> var btn1 = document.getElementById('btn1'); var btn2 = document.getElementById('btn2'); var box = document.getElementById('box'); btn1.onclick = function () { animation(box, 400); } btn2.onclick = function () { animation(box, 800); } function animation (element, target) { //先清理定時器 clearInterval(element.timeId); element.timeId = setInterval (function() { //獲取div當前位置, var current = element.offsetLeft;//數據類型,沒有px // div 每次移動多少像素 var step = 10; //當前位置小於目標位置,走正數,不然走負數 step = current < target ? step : -step; //每次移動後的距離 current += step; //判斷當前位置是否到達目標位置 if(Math.abs(target - current) > Math.abs(step)) { element.style.left = current + 'px'; }else { clearInterval(timeId); //最後一次剩餘要走的步數小於每次要走的步數,那麼直接到達終點 element.style.left = target + 'px'; } },20); } </script> </body>