为将来想阅读此内容的人编辑此页面:P
似乎我在这里要求太多了..但是非常感谢那些帮助我解决这个问题的人!其实我想接受你所有的答案,但似乎我只能接受一个..>。>
问题 1:
我想移动图像,但是当我尝试获取图像位置(使用)时,当我将其转换为整数时document.getElementById().style.left
,它会显示一个NaN 值。我想知道如何解决这个问题:/
这是我的代码:
<script type="text/javascript">
function playit()
{
alert(parseInt(document.getElementById('ball').style.left)); <!-- shows a NaN value -->
}
</script>
我将图像放入表格并使用 onclick 函数调用它;<td id="frame" colspan="5" onclick="playit()">
确切地说,我像这样声明了图像:<img src="play/ball.png" id="ball" name="ball"/>
这是我的图片CSS:
#ball
{
position:absolute;
top:500px;
left:500px;
}
解决方案(由VIPIN JAIN给出):使用.offsetLeft
而不是element.style.left
问题2:
编辑:
我修复了它,.offsetLeft
它工作得很好。现在,当我试图移动图像时,我又遇到了另一个错误。据说我使用了太多递归。我知道这是因为我正在使用递归,但我想知道,使用递归有什么问题?
这是我的代码:
<script type="text/javascript">
<script type="text/javascript">
var lball = document.getElementById('ball').offsetLeft;
var speed = 500;
function moveleft()
{
if(document.getElementById('ball').offsetLeft >0)
{
document.getElementById('ball').offsetLeft-=1;
setTimeout(moveleft(), speed);
}
else gameover();
}
function playit()
{
score = 0;
setTimeout(moveleft(), speed);
}
</script>
有人可以帮我弄这个吗?谢谢 :)
解决方案(由Teemu提供): 请参阅以下Teemu关于“编辑 II ”部分的评论。
问题 3(实际上我在评论中问它:P)
当我尝试使用 设置图像位置时document.getElementById('ball').offsetLeft-=1;
,它显示一个未定义的值。
解决方案(由Kemal Fadillah给出): “那是因为你不能设置offsetLeft
元素的值。你必须将新的位置值设置为.style.left
。像这样的东西:element.style.left = new_value + "px";
”
问题 4(再次,我在评论中问它:P)
似乎图像不会顺利移动(看起来它突然“扭曲”到另一个地方)。我已经提高了speed
价值,但它仍然无法正常工作。我错过了什么吗?我想知道.. :/
SOLUTION(由Kemal Fadillah给出): “设置speed
为 10 或 20。这应该使动画足够平滑。为了使图像移动得更快,而不是将左侧偏移减少 1,尝试将其减少3."