speed数值怎么让它来等于arr[i+1]指定的数值.,
点击移动的时候位置超过了.
该怎么来计算?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
*{margin:0;padding:0;}
ul{list-style:none outside none}
#wrap{width:500px;height:100px;overflow:hidden;margin:0 auto;position:relative}
#innerWrap{width:2500px;height:100px;position:absolute;}
#innerWrap li{width:500px;height:100px;float:left;}
.red{background:red;}
.orange{background:orange;}
.green{background:green;}
.blue{background:blue;}
.yellow{background:yellow;}
</style>
</head> <body>
<div id="previous">previous</div>
<div id="wrap">
<div id="innerWrap">
<ul>
<li class="red"></li>
<li class="orange"></li>
<li class="green"></li>
<li class="blue"></li>
<li class="yellow"></li>
</ul>
</div>
</div>
<div id="next">next</div>
<p id="num"></p>
<script type="text/javascript">
//alert((-5 + -6)/10)
var $ = function (id){return document.getElementById(id)};
var speed = 0;
var i=0;
var timer = null;
var dir = {
left:0,
right:1
}
function leftClick(){
$("previous").onclick = autoMove;
}
leftClick()
function autoMove(){
var arr = [0,-500,-1000,-1500,-2000];
if(dir.left == 0){

if(speed > arr[i+1]){
speed += parseInt((arr[i+1] + $("innerWrap").offsetLeft)/10);
$("innerWrap").style.left = speed +"px";
$("num").innerHTML += i+":"+speed+":"+arr[i+1]+"<br />";
timer = setTimeout("autoMove()",26);

}
else{
i++;
clearTimeout(timer)
}
}
}
</script> </body>
</html>

解决方案 »

  1.   


    function autoMove(){
    var arr = [0,-500,-1000,-1500,-2000];
    if(dir.left == 0){

    if(speed > arr[i+1]){
    //不能保证speed是500的倍数
    speed += parseInt((arr[i+1] + $("innerWrap").offsetLeft)/10);
    //加个判断
    if(speed < arr[i+1])
    speed = arr[i+1];
    $("innerWrap").style.left = speed +"px";
    $("num").innerHTML += i+":"+speed+":"+arr[i+1]+"<br />";
    timer = setTimeout("autoMove()",26);

    }
    else{
    i++;
    clearTimeout(timer)
    }
    }
    }
      

  2.   

    speed += parseInt((arr[i+1] + $("innerWrap").offsetLeft)/10);
    我觉得还是使用固定值比较好,否则倒后面速度变掉了
    speed += -50这样就挺合适的速度