所需的效果是,在页面加载时,标签不会显示,但是当用户单击复选框时,标签会显示。这个小代码示例只是一个示例来说明问题。当标签的Visible属性设置为false时,代码将始终从javascript返回对象引用异常。如果该行被注释掉,它将正确执行而没有对象引用异常,但标签应该在页面加载时隐藏。此应用程序使用母版页,这就是将ClientID传递给javascript Toggle函数的原因。
protected void Page_Load(object sender, EventArgs e)
{
this.chkSelect.Attributes.Add("onClick", "Toggle('" + this.lblAdd.ClientID + "', '" + this.chkSelect.ClientID + "')");
this.lblAdd.Visible = false;
}
<script type="text/javascript">
function Toggle(lblAdd, chk) {
var ctrlAdd = document.getElementById(lblAdd);
var ctrlChk = document.getElementById(chk);
if (ctrlChk.checked == true) {
ctrlAdd.style.display = 'inline';
}
else {
ctrlAdd.style.display = 'none';
}
}
</script>
<asp:Label ID="lblAdd" runat="server" Text="Add" Font-Size="8pt" ForeColor="Blue"> </asp:Label>
<asp:CheckBox ID="chkSelect" runat="server" Text="Check Box1" /><br />
我们如何在Page_Load中隐藏该标签,以便我们不会从Internet Explorer中获取对象引用错误?
...谢谢
答案 0 :(得分:5)
Visible
属性如果设置为false则不呈现HTML,这就是为什么你得到一个空引用(换句话说,ASP.NET的Visible
与{{1}无关CSS属性 - 它实际上是切换元素是否在HTML代码中呈现。)。而是在页面加载上分配定义display
的CSS类,然后使用javascript