1

望ましい効果は、ページの読み込み時にラベルが表示されず、ユーザーがチェック ボックスをクリックするとラベルが表示されることです。この小さなコード サンプルは、問題を説明するための単なるサンプルです。ラベルの 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 />

Internet Explorer からオブジェクト参照エラーが発生しないように、Page_Load でそのラベルを非表示にするにはどうすればよいでしょうか?

ありがとう...

4

1 に答える 1

5

false に設定すると、Visibleプロパティは HTML をレンダリングしません。そのため、null 参照を取得します (つまり、ASP.NETVisibleは CSS プロパティとは関係ありません。display実際には、要素が HTML コードでレンダリングされるかどうかを切り替えます)。 .)。代わりに、を定義するページ読み込み時に CSS クラスを割り当て、display: noneクリック時にそのクラスを javascript で削除します。

于 2013-05-14T21:10:36.060 に答える