我正在尝试使用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>
非常感谢。
答案 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时,我确保包括一个浮动,另一个明智的是,边缘右的改变没有意义 - 这应该是边缘左吗?