为什么我的javascript没有通过其id获取元素?

时间:2014-05-20 19:14:41

标签: javascript html asp.net webforms

我有一个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不能找到元素?是因为元素也是调用脚本的元素吗?

1 个答案:

答案 0 :(得分:3)

页面渲染后,所有ASPX组件的ID都会更改。

您有两种选择:

1)设置ASPX组件的属性ClientID =“Static”;

2)或者在运行时获取Control.ClientID,例如:

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