2011-07-11 65 views
0

我現在的HTML如下:收集DIV類轉換成JavaScript數組

<div class="wrapper" style="display:block;" id="item0"><!--- Stuff --></div> 
<div class="wrapper" style="display:none;" id="item1"><!--- Stuff --></div> 
<div class="wrapper" style="display:none;" id="item2"><!--- Stuff --></div> 
<div class="wrapper" style="display:none;" id="item3"><!--- Stuff --></div> 
<div class="wrapper" style="display:none;" id="item4"><!--- Stuff --></div> 

然後我有前進/後退鏈接,調用相應的JavaScript函數,它看起來像這樣:

function switchNextItem() { 
    var element0 = document.getElementById('item0'); 
    var element1 = document.getElementById('item1'); 
    var element2 = document.getElementById('item2'); 
    var element3 = document.getElementById('item3'); 
    var element4 = document.getElementById('item4'); 

    if (element0.style.display == 'block') { 
     element0.style.display = 'none'; 
     element1.style.display = 'block'; 
    } else if (element1.style.display == 'block') { 
     element1.style.display = 'none'; 
     element2.style.display = 'block'; 
    } else if (element2.style.display == 'block') { 
     element2.style.display = 'none'; 
     element3.style.display = 'block'; 
    } else if (element3.style.display == 'block') { 
     element3.style.display = 'none'; 
     element4.style.display = 'block'; 
    } else if (element4.style.display == 'block') { 
     element4.style.display = 'none'; 
     element0.style.display = 'block'; 
    } 
} 

有沒有可能讓我更動態地做到這一點?

謝謝! (我不熟悉JavaScript)。

+0

您是否有興趣潛入「jQuery」的簡單世界? – Phil

回答

3

你會喜歡jQueryhttp://jsfiddle.net/TCQum/

function switchNextItem() { 
    $('div.wrapper:visible') .hide() .next()  .show(); 
//  select visible div | hide it | goto next | show that one 
} 

編輯:更精確的一個:

function switchNextItem() { 
    var next = $('div.wrapper:visible:eq(0)') 
       .hide() 
       .next('div.wrapper'); // next one will be stored in next 

    if(next.length === 0) { // if there is no next one, show first one agan 
     $('div.wrapper:eq(0)').show(); 
    } else { // otherwise show next one 
     next.show(); 
    } 
} 

而且隨着.prev

function switchNextItem() { 
    var prev = $('div.wrapper:visible:eq(0)') 
       .hide() 
       .prev('div.wrapper'); // prev one will be stored in prev 

    if(prev.length === 0) { // if there is no prev one, show last one 
     $('div.wrapper:last').show(); 
    } else { // otherwise show prev one 
     prev.show(); 
    } 
} 
+0

Gah!我一直在'Java','C#'和'C++'方面!謝謝,我會檢查一下。 – Curtain

+1

如果不止一個是塊(這可能是不可能的),這不等同。你還必須處理最後一個案例的環繞,'next'不會包裝到第一個項目。 –

+0

@kingjiv:謝謝,我編輯了我的答案。 – pimvdb

3

這樣的事情應該工作。

function switchNextItem() { 
    var items=['item0','item1','item2','item3','item4']; 

    for(var i=0;i<items.length;i++){ 
     var element = document.getElementById(items[i]); 

     if (element.style.display == 'block') { 
      element.style.display = 'none'; 

      var nextElement = document.getElementById(items[(i+1) % items.length]); 
      nextElement.style.display = 'block'; 

      break; 
     } 
    } 
} 
+0

+1對於實際移動到最後的第一個,我忘了這一點。不過,你需要'(i + 1)%items.length'。 – pimvdb

+0

非常感謝你們兩個很好的答案。我會試試這個。 :) – Curtain

+0

好點,更新。當我打字時,雖然如此,但卻忘了檢查是否需要括號。 –