2012-02-16 31 views
0

我對JavaScript絕對陌生,所以請耐心等待。使一個元素可見和49個其他隱形

我在頁面上有50個元素,帶有ID。所有設置爲可見性:隱藏和位置:固定。我有一個對應於每個元素的按鈕。當點擊一個按鈕時,會啓動一個javascript函數,使相應的元素可見並且位置:relative。代碼看起來是這樣的:

document.getElementById("id1").style.position='relative'; 
document.getElementById("id1").style.visibility='visible'; 

爲了確保只有一個元素是有史以來可見,相對的,我也需要做出隱藏和固定的其他49個元素。我怎樣才能做到這一點,而不必訴諸於以下代碼排序:

function makeid1visibile() 
{ 
    document.getElementById("id1").style.position='relative'; 
    document.getElementById("id1").style.visibility='visible'; 

    document.getElementById("id2").style.position='fixed'; 
    document.getElementById("id2").style.visibility='hidden'; 
    document.getElementById("id3").style.position='fixed'; 
    document.getElementById("id3").style.visibility='hidden'; 
    document.getElementById("id4").style.position='fixed'; 
    document.getElementById("id4").style.visibility='hidden'; 
    // etc... 
} 

任何幫助,將不勝感激,因爲有50個元素,編碼行數會高得離譜。

+0

所有的50個元素是哪一種?或者你可以給他們分配班級名稱? – 2012-02-16 09:44:36

回答

4

應該能夠在單個循環來處理它,只是通過在項目的數量,您希望顯示:

function makeIdVisible(id) { 
    document.getElementById("id" + id).style.position='relative'; 
    document.getElementById("id" + id).style.visibility='visible'; 

    for (var i = 1; i <= 50; i++) { 
     if (i !== id) { 
      document.getElementById("id" + i).style.position='fixed'; 
      document.getElementById("id" + i).style.visibility='hidden'; 
     } 
    } 
} 
+0

你救了我幾千行編碼我的朋友! – 2012-02-17 02:21:18

1

給你檢查框類名「SomeClass的」,並通過功能documet.getElementsByClassName

選擇所有元素
1

你可以寫這樣的功能:

function makeVisible(id){ 
    var idList = ['id1','id2','id3','id4']; 
    for(var i = 0, l = idList.length; i<l ; i++){ 
     document.getElementById(idList[i]).style.position='fixed'; 
     document.getElementById(idList[i]).style.visibility='hidden'; 
    } 
    document.getElementById(id).style.position='relative'; 
    document.getElementById(id).style.visibility='visible'; 
} 

然後你可以使用 makeVisible( '#ID1'); 使id1元素可見

相關問題