这个该怎么来计算啊?speed数值被超出了.?求解

rao3324180 2011-06-26 03:02:38
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>
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
varlj 2011-06-26
  • 打赏
  • 举报
回复
speed += parseInt((arr[i+1] + $("innerWrap").offsetLeft)/10);
我觉得还是使用固定值比较好,否则倒后面速度变掉了
speed += -50这样就挺合适的速度
varlj 2011-06-26
  • 打赏
  • 举报
回复

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)
}
}
}

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧