ThatManK Mobile Article
给不同对象添加不同定时器
<!DOCTYPE html>
<html lang="en">
<head>
<style>
div {
position: absolute;
left: 0;
width: 100px;
height: 100px;
background-color: pink;
}
span {
position: absolute;
left: 0;
top: 200px;
display: block;
width: 150px;
height: 150px;
background-color: purple;
}
</style>
</head>
<body>
<button>点击夏雨荷才走</button>
<div></div>
<span>夏雨荷</span>
<script>
// 给不同的元素指定了不同的定时器
function animate(obj, target) {
// 当我们不断的点击按钮, 这个元素的速度会越来越快, 因为开启了太多的定时器
// 解决方案就是 让我们元素只有一个定时器执行
// 先清除以前的定时器, 只保留当前的一个定时器执行
clearInterval(obj.timer);
// if (obj.timer) return;
obj.timer = setInterval(function () {
if (obj.offsetLeft >= target) {
// 停止动画 本质是停止定时器
clearInterval(obj.timer);
}
obj.style.left = obj.offsetLeft + 1 + "px";
}, 30);
}
var div = document.querySelector("div");
var span = document.querySelector("span");
var btn = document.querySelector("button");
// 调用函数
animate(div, 300);
btn.addEventListener("click", function () {
animate(span, 200);
});
</script>
</body>
</html>