间隔更改DIV边距

时间:2012-11-14 05:38:15

标签: javascript settimeout setattribute

我正在尝试使用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>

非常感谢。

1 个答案:

答案 0 :(得分: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时,我确保包括一个浮动,另一个明智的是,边缘的改变没有意义 - 这应该是边缘吗?