2

如何<asp:Panel>使用 javascript 使可见?

我已完成以下操作,但出现错误(无法读取 null 的属性样式)

 <asp:Panel runat="server" id="panNonAfricanCountries" Visible="false">

var panNonAfricaDropDown = document.getElementById("panNonAfricanCountries")
if (dropDownFirst == "Yes") {
    panNonAfricaDropDown.style.visibility = "visible";
}
4

2 回答 2

3

Visible="false"asp.net 控件上的结果不会在页面上呈现控件

您在这里尝试做的是渲染它,但使用 css 样式使其对用户隐藏,直到使用 javascript 显示它。归档不使用 Visible,但为您的面板设置样式或 css。

<asp:Panel ID="PanelId" runat="server" Visible="true" style="visibility:hidden" >
Some Content here...    
</asp:Panel>

asp.Panel呈现为,您在页面上的divhtml 可能为:

<div id="PanelId" style="visibility:hidden">
Some Content here...    
</div>

我说可能是因为我们不确定 Id 是如何呈现的。为了得到它,我们使用PanelId.ClientID你的最终 javascript 代码将是:

var panNonAfricaDropDown = document.getElementById("<%=PanelId.ClientID%>");
if (dropDownFirst == "Yes" && panNonAfricaDropDown) {
    panNonAfricaDropDown.style.visibility = "visible";
}
于 2013-05-19T13:58:08.427 回答
2

ASP.NET 会破坏在服务器上运行的元素的名称。您必须找到损坏的名称,然后对该名称执行 document.getElementById。

或者,您可以使用 asp:panel 的 ClientIDMode 属性来关闭修饰(http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx

于 2013-05-19T13:46:44.763 回答