注意 由于需要使用for循环去遍历div所以初始计时器的设定类似于给div添加一个属性
在后期的传参内也需要注意这一点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
margin: 0;
}
div{
width: 100px;
height: 100px;
background-color: #78c430;
margin-top: 40px;
}
</style>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<script type = "text/javascript">
var div = document.getElementsByTagName('div');
for(var i = 0;i < div.length;i++){
div[i].timer = null;
div[i].onmouseover = function(){
startMove(this,500);
};
div[i].onmouseout = function(){
startMove(this,100);
};
}
function startMove(obj,target){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var speed = (target-obj.offsetWidth)/10;
speed = speed>0?Math.ceil(speed) : Math.floor(speed);
if(target == obj.offsetWidth){
clearInterval(obj.timer);
}else {
obj.style.width = obj.offsetWidth+speed+'px';
}
},30)
}
</script>
</body>
</html>