2012-04-25 76 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'; 
}