3

我无法让这个图像向右移动,任何人都可以帮助我刚刚开始编写脚本,我发现它非常混乱。

<html>
<head>
</head>
<body style="margin:0px;">
<img id="tank" style="position:absolute;"src="tank.png"/>
<script type="text/javascript">
var change = document.getElementById('tank').style.left = '0';

while(change < 200)
{
change++;
}
</script>
</body>
</html>
4

4 回答 4

3

那个剧本有很多问题...

首先,您尝试将整数设置为 CSS 长度 - 非零长度需要一个您未提供的单位。

其次,原始值不会仅仅因为您想要它们而通过引用传递。然而,对象是。因此,您可以跟踪document.getElementById('tank').style并更改其left属性以移动图像。

第三,在脚本运行时浏览器不会重绘页面,这意味着如果你让脚本移动图像,它会立即在它的结束位置(你甚至不会在开始位置看到它,因为脚本立即运行)。

我认为这涵盖了您做错的所有事情。现在这里是如何正确地做到这一点。

(function() {
// don't leak variables into the global scope - think "variable = carbon dioxide"
    var elem = document.getElementById('tank'), pos = 0,
        timer = setInterval(function() {
            pos++;
            elem.style.left = pos+"px";
            if( pos == 200) clearInterval(timer);
        },25);
})();
于 2012-07-28T15:36:19.940 回答
0
var change = document.getElementById('tank').style.left = '0';

在您的值之后添加“px”,并且还有一些大于 0 的值(如 200),以便更改可见。

var change = document.getElementById('tank').style.left = '200px';

我想这就是你要找的

var image = document.getElementById('tank');
var change = 0;


setInterval(function(){
image.style.left = change+"px";
change+=5;
if(change>200){
clearInterval();
}
},50);
于 2012-07-28T15:37:13.213 回答
0

要制作动画,您需要在计时器中更改样式属性......类似

var thank = document.getElementById("thank");
var x = 0;

setInterval(function(){ thank.style.left = x + "px"; x++; },
            20); // 20ms = 50 frames per second
于 2012-07-28T15:35:40.753 回答
0

while 循环根本不是您要寻找的,它会立即完成所有工作,或者如果条件始终为真,那么它将冻结您的页面,因为它是一个无限循环。

您可以setInterval改用:

<script type="text/javascript">
var left = 0, //Work with actual number type
    tank = document.getElementById('tank'),
    timerId = 0;

timerId = setInterval( function() { //This function is called by the browser every 33 milliseconds
    if( left++ > 200 ) {
        clearInterval( timerId ); //Stop the interval because left is > 200
    }
    tank.style.left = left + "px"; //Only convert to number + "px" when we need to set .style.left
}, 33 );
</script>

演示http://jsfiddle.net/Vhpc9/

于 2012-07-28T15:36:10.827 回答