2012-04-25 75 views
3

,我有越来越有点长的代码,我觉得有一种方法来简化它,需要它来看看:简化了代码

var slidernav = document.getElementsByTagName('li'); 
slidernavinital = 20; 
slidernavadd = 30; 
slidernav[0].style.top = slidernavinital + slidernavadd*0 + 'px'; 
slidernav[1].style.top = slidernavinital + slidernavadd*1 + 'px'; 
slidernav[2].style.top = slidernavinital + slidernavadd*2 + 'px'; 
slidernav[3].style.top = slidernavinital + slidernavadd*3 + 'px'; 
slidernav[4].style.top = slidernavinital + slidernavadd*4 + 'px'; 
slidernav[5].style.top = slidernavinital + slidernavadd*5 + 'px'; 
slidernav[6].style.top = slidernavinital + slidernavadd*6 + 'px'; 
slidernav[7].style.top = slidernavinital + slidernavadd*7 + 'px'; 
slidernav[8].style.top = slidernavinital + slidernavadd*8 + 'px'; 
slidernav[9].style.top = slidernavinital + slidernavadd*9 + 'px'; 
slidernav[10].style.top = slidernavinital + slidernavadd*10 + 'px'; 
slidernav[11].style.top = slidernavinital + slidernavadd*11 + 'px'; 

是不可能做这样的事情:

document.getElementsByTagName('li')[x].style.top = 20 + 30*x + 'px'; 

非常感谢!

回答

5

是的。将其包装在for循环中。

for(var i = 0; i < sliderNav.length; i++) { 
    sliderNav[i].style.top = sliderNavInitial + sliderNavAdd*i + "px"; 
} 

我想你应该拿起简介编程的书,不过,如果你不知道循环(什么是电脑的点,如果不照顾的重复的东西给你了什么? )

编辑:顺便说一句,在for环路是简写以下while循环结构:

var i = 0; 
while(i < sliderNav.length) { 
    sliderNav[i].style.top = sliderNavInitial + sliderNavAdd*i + "px"; 
    i++; 
} 

它只是把所有的环路的第一行中的“簿记”,让您可以更轻松预测它将会有多少次通过。 (while循环只是循环,直到满足条件,然后停止,所以,如果你忘了包括i++;的一部分,它永远不会停止。)

+0

非常好的伙计,非常感谢。它工作得很好! Btw其slideNavinital不sliderNavInitial,但它没关系!再次感谢! – 2012-04-25 21:05:42

1

可以使用用于

这样

var ln = slidernav.length; 
for(var i = 1;i<=ln;i++) 
{ 
    slidernav[i].style.top = slidernavinital + slidernavadd*i + 'px'; 
} 

它是一个非常简单的预编程结构。

2

使用循环来遍历元素。

var slidernav = document.getElementsByTagName('li'); 
slidernavinital = 20; 
slidernavadd = 30; 
for (var n = 0; n<slidernav.length; n++) { 
    slidernav[n].style.top = slidernavinital + slidernavadd*n + 'px'; 
}