一直在思考在多个div运动的过程中,通过for循环在给每个div加事件的时候,可以直接 div[ i ].onmouseover = tomove; 但是发现,无法找到当前调用函数的div,用了this和在运动函数中获取div并加i的两种情况,疯狂报错 ̄へ ̄
其实,可以通过添加对象参数obj,移动至目标距离target,或者,改变任意参数ele。
第一种最简单的,加入参数obj
function moveto(obj){
var timer = 0;
clearInterval(timer);
timer = setInterval(function(){
var speed = (400-obj.offsetWidth)/10;
obj.style.width=obj.offsetWidth + speed+'px';
},30);
}
这是最简单的,鼠标移入,div变宽到目标宽度。
接下来你,完善鼠标移入和移除的完整事件,通过添加
adiv[i].onmouseout = function(){
clearInterval(timer);
}
会发现,报错了=。=,因为timer只在moveto函数中被定义。
进一步完善:
思考,要保证每个div运动的互不干扰(多物体运动最容易出现的错误,所有的数据都不能共用,不然会出现错误。可以