2011-07-11 29 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

好点,更新。当我打字时,虽然如此,但却忘了检查是否需要括号。 –