2014-05-20 48 views
-1

我有一個aspx頁面,當我在下拉列表中選擇的國家是「美國」時,我試圖隱藏一個表格行。我不斷收到空引用錯誤(或與JavaScript等效),因爲它找不到其中一個元素。爲什麼我的javascript沒有通過它的id獲取元素?

這裏是JavaScript

出於某種原因,無法找到元素「國家」。

以下是「國家」的模樣:

<tr> 
    <th class="style1"><strong>Country: </strong></th> 
    <th class="style2"> 
     <asp:DropDownList onchange="cntryslct()" id = "country" ...>stuff</asp:DropDownList> 
    </th> 
</tr> 

不知道它的問題,但「國家」是「staterow」之後,元件隱藏和顯示。

爲什麼它不能通過它的ID找到元素?是否因爲元素也是腳本被調用的元素?

+2

這是因爲頁面renderization後ID的變化。你應該在你的下拉列表上使用ClientID =「Static」 – cr0ss

+1

當處理js時,總是看着呈現的html(瀏覽器,查看源代碼)而不是raw aspx。我想你的'id'根本就不是你認爲它一旦被處理的東西。 –

+0

根據您使用的瀏覽器不同,您可以右鍵單擊相關選擇元素,然後單擊「檢查元素」。在這裏你可以檢查它是否實際上有一個「國家」的ID。 –

回答

3

頁面渲染後,所有ASPX組件的ID都發生變化。

你有兩種選擇:

1)設置你的ASPX組件的屬性ClientID = 「靜態」;

2)或獲得Control.ClientID在運行時,例如:

var dropdown = document.getElementById('<%= country.ClientID %>');