0

我正在尝试使用 setAttribute 更改每个元素的边距。

我怎样才能使用我的变量dist “距离”来减少值直到 10,每次延迟“间隔”之后?

var dist=200; var speed = 2000;

function slideLeft(x){
    dist--; 
    slideSet[x].setAttribute("style","margin-right:"+dist+"px;");   
    setTimeout(slideLeft(x), delay);    
}

以这些风格和元素为例...

.widiv { margin-right:200px; }

<div>
    <div class="widiv" ></div>
    <div class="widiv" ></div>
</div>

非常感谢。

4

1 回答 1

0

这是您的代码进行了一些更改:请参阅小提琴http://jsfiddle.net/chrismoutray/4p3xX/

var dist = 200, delay = 500,
    slideSet = document.getElementsByTagName('div');

function slideLeft(x) {
    dist--;
    if (dist < 0) return;
    slideSet[x].setAttribute("style", "margin-right:" + dist + "px;");
    setTimeout(function() {
        slideLeft(x);
    }, delay);
}

slideLeft(1);

在样式中添加了一些内容:

.widiv { 
    margin-right:200px; 
    float:left; 
    width: 100px; 
    border: 1px solid black; 
    height: 100px; }

主要区别在于,在调用 setTimeout 时,我使用函数委托 ( function() { <your code here> }) 来调用slideLeft方法,以便正确使用 x 变量——我认为如果不这样做,就不能将语句传递给 setTimeout。

同样在设置 div 的样式时,我确保在左侧包含一个浮动,否则对右侧边距的更改没有意义 - 这应该是左侧边距吗?

于 2012-11-14T10:34:50.163 回答