通过页面加载隐藏标签时不会显示标签

时间:2013-05-14 21:02:13

标签: javascript asp.net

所需的效果是,在页面加载时,标签不会显示,但是当用户单击复选框时,标签会显示。这个小代码示例只是一个示例来说明问题。当标签的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中获取对象引用错误?

...谢谢

1 个答案:

答案 0 :(得分:5)

Visible属性如果设置为false则不呈现HTML,这就是为什么你得到一个空引用(换句话说,ASP.NET的Visible与{{1}无关CSS属性 - 它实际上是切换元素是否在HTML代码中呈现。)。而是在页面加载上分配定义display的CSS类,然后使用javascript

删除该类