我之前隐藏了我的下拉列表时遇到问题。
所以根据一些动作,我在我的下拉列表上做了一个hide(),效果很好。但是后来如果其他动作发生在我想显示下拉列表增益的地方,我会在下拉指针上得到一个空引用:
在某些时候我会根据用户操作隐藏此下拉列表:
var ddlElotizType= "#" + document.getElementById('<%=ddlElotizType.ClientID %>');
$('#' + ddlElotizType.id).hide();
然后基于另一个动作,我尝试再次显示它,以便在它上面做一个show():
var dropdown = document.getElementById('<%=ddlElotizType.ClientID %>');
$('#' + dropdown.id).show();
$('#' + dropdown.id).attr("disabled", false);
...
<fieldset>
<p class="formLabel"><%="Car Type" %></p>
<p class="formField"><label id="singleCarTypeText" /><asp:DropDownList ID="ddlElotizType" runat="server" /></p>
</fieldset>
当我尝试再次通过id引用它时,我得到一个js错误,说“dropdown is null”;
似乎我可以通过上面的元素id引用下拉列表,只有它已经可见但是我认为如果它被隐藏它应该无关紧要,它仍然在DOM树中吗?仍然可以访问...它必须是。
答案 0 :(得分:0)
可能因为无法访问已禁用的方法。您只需要使用.hide()
隐藏它,而不是禁用它。你也在混合标准的DOM方法和jQuery。 jQuery已经为你执行了搜索。以下是如何显示元素的方法。
var dropdownId = '<%=ddlElotizType.ClientID %>';
$('#' + dropdownId).show();
隐藏元素时,请不要禁用它。
答案 1 :(得分:0)
这里使用的是双"#"
。请避免这样做。
var ddlElotizType= "#" + document.getElementById('<%=ddlElotizType.ClientID %>');
正确的方法:
编辑:
商店ID的变量:
var ddlElotizTypeID='<%=ddlElotizType.ClientID %>';
像这样隐藏
$('#'+ddlElotizTypeID).hide();
像这样显示DropDownList。
$('#'+ddlElotizTypeID).show();
这样可行。