2015-10-16 148 views
-1

有沒有辦法將所有樣式類傳遞給函數?如何將HTML樣式類傳遞給Javascript函數參數

風格類代表一個錶行,我試圖隱藏所有行,但被單擊的行除外。 (下面的代碼,我道歉,如果它不是在代碼標籤)

function toggle_visibility(id, param2, param3) 
{ 
    var getClasses = document.getElementsByClassName(id); 
    var getClasses2 = document.getElementsByClassName(param2); 
    var getClasses3 = document.getElementsByClassName(param3); 

    for (var i = 0; i < getClasses.length; i++) 
    { 
     if(getClasses[i].style.display == 'none') 
     { 
      getClasses[i].style.display = ''; 
     } 
    } 

    for (var i = 0; i < getClasses2.length; i++) 
    { 
     if(getClasses2[i].style.display == '') 
     { 
      getClasses2[i].style.display = 'none'; 
     } 
    } 
    for (var i = 0; i < getClasses3.length; i++) 
    { 
     if(getClasses3[i].style.display == '') 
     { 
      getClasses3[i].style.display = 'none'; 
     } 
    } 
} 

代碼的作品,但不具備可伸縮性目前所以我想,如果每個班級都在傳,然後用搜索班「 '聲明。這可能嗎?

感謝

回答

0

您可以使用變量參數:

function toggle_visibility() 
{ 
    var first = true; 
    var i,j, getClasses; 

    for (i = 0; i < arguments.length; i++) { 
     getClasses = document.getElementsByClassName(arguments[i]); 

     for (j = 0; j < getClasses.length; j++) 
     { 
      if(getClasses[j].style.display == (first ? 'none' : '')) 
      { 
       getClasses[j].style.display = (first ? '' : 'none'); 
      } 
     } 
     first = false; 
    } 
} 

有了這個,你可以調用函數與任意數量的參數,第一個將顯示與所有其他隱藏

0

創建DOM中所有可用類的數組,並將其作爲參數傳遞給函數。

var All= document.getElementsByTagName("*"); 
var allClasses=[]; 
for(var i=0; i< All.length;i++){ 
    if(All[i].className){ 
    allClasses.push(All[i].className); 
    } 
} 

function toggle_visibility(allClasses) 
{ 
    //do whatever you want! 
} 
+0

是不是調用document.getElementsByTagName(「*」)有點殘酷的瀏覽器和內存? –

+0

耶!但是這是做到這一點的一種方式,但不是最好的! –

相關問題