<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>mouseOverOut</title>
<style type="text/css">
*{margin:0;padding:0;}
#div1{
height:200px;
width:200px;
background:red;
position:relative;
left:-200px;
top:0;
}
#div2{
height:50px;
width:20px;
background:blue;
position:absolute;
top:75px;
left:200px;
}
</style>
</head>
<body>
<script type="text/javascript">
window.onload=function(){
var oDiv=document.getElementById('div1');
oDiv.onmouseover=function(){
startMove(0);
}
oDiv.onmouseout=function(){
startMove(-200);
}
}
var timer=null;
var speed=0;
function startMove(iTarget){
clearInterval(timer);
var oDiv=document.getElementById('div1');
speed=(iTarget-oDiv.offsetLeft)/20;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
timer=setInterval(function(){
if(oDiv.offsetLeft==iTarget){
clearInterval(timer);
}else{
oDiv.style.left=oDiv.offsetLeft+speed+'px';
}
},20);
}
</script>
<div id="div1">
<div id="div2">分享</div>
</div>
</body>
</html>以上我是敲得代码,几乎和老师的一样
但是,我测试过程有一个bug,就是在蓝色分享不断地将鼠标移进移出就会出现一些bug,大神们可以测试一下,帮我解答一下。谢谢啦
timer=setInterval(function(){
if(oDiv.offsetLeft==iTarget){
clearInterval(timer);
}
//增加两个else if语句
else if(iTarget<0&&iTarget-oDiv.offsetLeft>0){
oDiv.style.left=iTarget+'px';
}else if(iTarget==0&&iTarget-oDiv.offsetLeft<0){
oDiv.style.left=iTarget+'px';
}
else{
oDiv.style.left=oDiv.offsetLeft+speed+'px';
}
},20);问题的起因是由于反复的进行鼠标移入移出,导致oDiv.offsetLeft+speed的值超过iTarget这一边界,从而不能清除定时器。
。。。搞笑,,,,逗我?我初学者。。。
为什么我feel不到bug?
测试过了,果然可以了,谢谢你啦