我有一个aspx页面,当我在下拉列表中选择的国家/地区是“US”时,我正在尝试隐藏表格行。我一直得到一个空引用错误(或等效的javascript),因为它找不到其中一个元素。
这是javascript
<script type="text/javascript">
function cntryslct() {
var elem = document.getElementById("staterow");
var dropdown = document.getElementById("country");
elem.style.display = (dropdown.value; != "US") ? "none" : "";
};
</script>
由于某种原因,它找不到元素“country”。
以下是“国家”的样子:
<tr>
<th class="style1"><strong>Country: </strong></th>
<th class="style2">
<asp:DropDownList onchange="cntryslct()" id = "country" ...>stuff</asp:DropDownList>
</th>
</tr>
不确定是否重要,但“国家”是在“staterow”之后,该元素被隐藏并显示。
为什么它的id不能找到元素?是因为元素也是调用脚本的元素吗?
答案 0 :(得分:3)
页面渲染后,所有ASPX组件的ID都会更改。
您有两种选择:
1)设置ASPX组件的属性ClientID =“Static”;
2)或者在运行时获取Control.ClientID,例如:
var dropdown = document.getElementById('<%= country.ClientID %>');