2016-10-13 34 views
1

我在數據網格中有一個下拉列表框,我需要隱藏或顯示它。我可以得到這個元素。但是,我收到一個錯誤'無法設置屬性'顯示未定義或空引用。當我想隱藏它。我試圖使用可見性,它也有相同類型的錯誤。有人會告訴我如何去做。由於無法設置屬性的'知名度'或'顯示'

我的控制:

<asp:dropdownList ID="dropID" runat="server" cssclass="selectColor w175 show"/> 

在我的樣式表類:

.show { 
display: normal; 
}  

.selectColor { 

color: #333333; }  


.w175 { width:175px; } 

我的javascript功能:

function NeedChange(id) { 
var dropID = document.getElementById(id); 
    if (dropID!=undefined){ 
    //dropID.style.visibility="hidden"; 
    dropID.style.display='none'; 
} 
} 
+1

什麼是*正常*? https://developer.mozilla.org/en-US/docs/Web/CSS/display – epascarello

+1

那麼你怎麼稱呼NeedChange? – epascarello

+0

你使用console.log來測試這些東西嗎?一旦你聲明瞭dropID,把一個console.log放進去看看它是否返回任何東西。 你也可以將你的條件重構爲'if(dropID)' - 如果爲null或未定義,將會爲false。 –

回答

0

這應該工作

function NeedChange(id) { 
var dropID = document.getElementById(id); 
if (dropID!=undefined){ 
//dropID.style.visibility="hidden"; 
$("#dropID").removeClass("show"); 
} 
} 
+0

我收到了一個錯誤「JavaScript運行時錯誤:對象不支持屬性或方法'removeClass' – user819774

+0

@ user819774:我做了一些更改 –

+0

並確保您在此函數之前添加了jquery –

0

您的方法存在的問題是頁面上不存在ID dropID,您的javascript無法找到它。 asp.net將元素中的ID重複數據(GridView,ListView,Repeater等)變成如下所示:ContentPane1_GridView1_DropDownList1_0。 因此,爲了顯示/隱藏特定的DropDownList,您需要知道行號。你可以得到這個ID的其餘部分:

<script type="text/javascript"> 
    var myElement = "<%= GridView1.ClientID %>_dropID_" + rowNumber; 
    // becomes ContentPane1_GridView1_dropID_24 

    document.getElementById(myElement).style.display = "none"; 
</script> 

棘手的部分是獲取行號。這將取決於您的網格設計,以及爲什麼以及如何隱藏下拉菜單;

相關問題