2012-09-12 48 views
0

我需要獲取多個元素才能打開和關閉。現在這個函數只是選擇ID,但我想知道如何讓它選擇一個類。我以爲我可以將document.getElementById更改爲document.getElementByClass,但那不起作用。通過他們展開和摺疊文件夾

#ToggleTarget {display:hidden;} 

<script type="text/javascript"> 
function Toggle() { 
    var el = document.getElementById("ToggleTarget"); 
    if (el.style.display == "block") { 
     el.style.display = "none"; 
    } 
    else { 
     el.style.display = "block"; 
    } 
} 
</script> 
+2

你可以做的第一件事情就是讓自己變得簡單,就是查找jQuery。它使上述只需一行或兩行代碼輕而易舉。 – techfoobar

+1

注意:'display:hidden'不是CSS,它應該聲明'display:none'。 –

回答

1
var getElementsByClassName = function(node, classname) { 
    if (document.getElementsByClassName) { 
     return document.getElementsByClassName(classname); 
    } 
    var a = []; 
    var re = new RegExp('(^|)'+classname+'(|$)'); 
    var els = node.getElementsByTagName("*"); 
    for(var i=0,j=els.length; i<j; i++) 
     if(re.test(els[i].className))a.push(els[i]); 
    return a; 
} 

var Toggle = function(){ 
    var tp = getElementsByClassName(document.documentElement,'toggle'); 
     for(var i = 0; i < tp.length; i++){ 
      if(tp[i].style.display=='none') 
       tp[i].style.display='block' 
      else 
       tp[i].style.display='none' 
    } 
} 

使用getElementsByClassName,然後循環:

我挑的這段代碼我的搜索過程。

編輯

只要確保他們有類toggle在我的代碼中使用上面。

UPDATE

新增功能IE支持(來自https://stackoverflow.com/a/7410966/600101通過)。

+0

getElementsByClassName將無法在IE中工作.. – Andromeda

+0

http://stackoverflow.com/a/7956122/600101如果需要在IE –

+0

謝謝henrik ...我已擴展和崩潰的項目已關閉,並且無法打開。有沒有觸發器來打開我錯位的文件夾? –