javascript我这个代码哪里错了为什么不能运行??

<html><head><styletype="text/css">#div1{width:200px;height:180px;background:red;posit... <html>
<head>
<style type="text/css">
#div1{width:200px;height:180px;background:red;position:absolute;}
</style>
<script>
window.onload=function(){
var oDiv=document.getElementById("div1")
var oBtn=document.getElementById("btn1")
var oBtn2=document.getElementById("btn2")
var t=0;
oBtn.onclick=function(){
clearInterval(t);
t=setInterval(function(){
var speed=(300-oDiv.offsetLeft)/8;
if(speed>0)
{
speed=Math.ceil(speed);
}
else if(speed>0)
{
speed=Math.floor(speed);
}
else
{
clearInterval(t);
}
oDiv.style.left=oDiv.offsetLeft+speed+"px";
},55);
};
oBtn2.onclick=function(){
clearInterval(t);
t=setInterval(function(){
var speed=(0-oDiv.offsetLeft)/8;
if(speed>0)
{
speed=Math.ceil(speed);
}
else if(speed>0)
{
speed=Math.floor(speed);
}
else
{
clearInterval(t);
}
oDiv.style.left=oDiv.offsetLeft+speed+"px";
},55);
};
};
</script>
</head>
<body>
<input id="btn1" type="button" value="开始">
<input id="btn2" type="button" value="开始2">
<div id="div1"></div>
</body>
</html>
展开
 我来答
细雨531
2015-02-26 · TA获得超过301个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:55.4万
展开全部

没错啊,可以运行。

更多追问追答
追问
但是不能返回去
追答
是点一次 开始2 返回到初始位置还是多次?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lcswsm
2015-02-26 · TA获得超过488个赞
知道小有建树答主
回答量:716
采纳率:0%
帮助的人:507万
展开全部
oBtn2.onclick=function(){
clearInterval(t);
t=setInterval(function(){
var speed=(0-oDiv.offsetLeft)/8;
oDiv.style.left=oDiv.offsetLeft+speed+"px";
},55);
};
试试这样
更多追问追答
追问
你这个代码可以  为什么要这样改呢   为什么这里不用Math来取整呢  而且为什么不用关闭定时器了呢
追答
var speed=(0-oDiv.offsetLeft)/8;

这里取回的speed就是负数,你用if那些判断只执行最后一条else 结果就是oBtn2.onclick
点击后,就执行clearInterval(t);就是你看见的 点击开始2 就动一下,
试试这样

oBtn2.onclick=function(){
clearInterval(t);
t=setInterval(function(){
var speed=(0-oDiv.offsetLeft)/8;
if(speed-1)
{
speed = 0;
clearInterval(t);
}
oDiv.style.left=oDiv.offsetLeft+speed+"px";
},55);
};
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
内的权势
2015-02-26 · TA获得超过349个赞
知道小有建树答主
回答量:367
采纳率:50%
帮助的人:274万
展开全部
唉,别人回答都不采纳,现在都没人回答你的问题了。造孽,造孽。
更多追问追答
追问
你在clearInterval(t);之前,压根就没有T,如何清除。大神这句话是什么意思  不懂
追答
刚才看错了。

其实你只用获取oDiv.style.left的值来做,没必要oDiv.offsetLeft。

如果oDiv.style.left等于0,则if(oDiv.style.left0) oDiv.style.left-=speed;反正思路就是这样。

而且,而且,你的if else实在看出你逻辑有问题,举个列子吧,5个水果,3个苹果,2个梨子,你先说,你拿了3个苹果,要去吃饭。然后你又对着剩下的2个梨子说,我在你们里面拿出苹果我就去扫地。因为你已经拿了3个苹果,明知道else后面不可能再有苹果了,你还非得去if判断下梨子里面还有没有苹果,如果有你要做啥,那岂不是谎话了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式