15

javascript の変数にラベルを格納しようとしているだけですが、何らかの理由でこれが機能しませんdocument.getElementById('control');。他のすべてが機能するため、JavaScriptがhtmlファイルに正常にリンクしていることはわかっています。

ここに私のJavaScriptコードがあります:

function performEvapCooledCircuit(txt)
{
    var error = document.getElementById('lblError');


    if (txt.value == null || isNaN(txt.value))
    {
       error.style.visibility = "visible";
    }
}

私のラベルのhtmlコードは次のとおりです。

<asp:Label ID="lblError" class="NormLabel" runat="server" 
   style="color:red; visibility:hidden;" Text="Invalid Input."></asp:Label>

object expected?? というエラーが表示されます。

4

5 に答える 5

22

ASP.NET が生成する ID は「lblError」ではないため、その ID で参照する必要があります。ClientID

document.getElementById('<%=lblError.ClientID %>');

JavaScript ファイルが外部にある場合、通常、ID がプロパティに設定されていることを確認するために、「Init」JavaScript メソッドのタイプを記述する必要がありました。

ASPX ページで:

<script type="text/javascript">
    var lblError = null;
    function InitializeVariables()
    {
        if (lblError == null) // make sure you only do this once
        {
            lblError = document.getElementById("<%=lblError.ClientID %>");
        }
    }
</script>
<asp:Label 
    ID="lblError"
    class="NormLabel"
    runat="server" 
    style="color:red; visibility:hidden;"
    Text="Invalid Input."></asp:Label>

次に、javascript ファイルでInitializeVariables()、適切な asp.net コントロールを指す変数があることを確認するために呼び出す必要があります。

function performEvapCooledCircuit(txt)
{
    InitializeVariables();

    if (txt.value == null || isNaN(txt.value))
    {
        lblError.style.visibility = "visible";
    }
}
于 2011-01-04T16:19:21.887 に答える
6

「ハンター」は物事を行うためのかなり堅実な方法を提供しますが、私の意見では、はるかに優れた方法は、コントロールの「CliendIDMode」プロパティを使用し、そのプロパティを「Static」に設定することです。これにより、クライアントIDとサーバーIDが同じになります。このような:

<asp:TextBox ID="ServerAndClientId" runat="server" ClientIDMode="Static" />
于 2012-11-20T23:10:16.557 に答える
2

ラベルの ID が「lblError」ではありません。ASP.net エンジンが ID を変更しました。ブラウザで HTML ソース コードを確認して、実際の ID を確認します。

于 2011-01-04T16:19:35.543 に答える
1

これは、ラベルの HTML ではありません。これは、応答で送信される前に HTML にレンダリングされる ASP.NET コントロールです。ASP.NET WebForms コントロールは、作成する HTML の ID を変更することがあります。

Web ページのソースを表示して、レンダリングされたページにある HTML 要素の ID を確認します。

于 2011-01-04T16:21:21.083 に答える
1

これを使用できます:

document.getElementById('<%= lblError.ClientID %>').click()

ASP.NET 4.0 以降では、要素にClientIDModeプロパティを使用できます。そして、それを設定StaticするClientIDと、値は ID プロパティの値に設定されます。

 <asp:Label ID="lblError" runat="server" ClientIDMode="Static" />

次のようにレンダリングされます。

<span id="lblError" name="ctl00$MasterPageBody$ctl00$Label1" />
于 2013-01-18T14:36:18.430 に答える