12

JavaScript を使用していますが、実行中に次のエラーが表示されます。

Microsoft JScript runtime error: 'document.getElementById(...)' is null or not an object

この私のコード:

<asp:Content ID="content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script language="javascript" type="text/javascript">
    function ConfirmTransfere() {
        if (confirm("Syatem not allow negative inventory, would you like to continue ?") == true) {
            document.getElementById("btnAlelrt").click();

        }       
}
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="uxContainer" runat="server">
    <ContentTemplate>
 <table> 
<tr>
        <td>
        <asp:Button ID="uxTransfer" runat="server" Text="Transfer" OnClick="uxTransfer_Click" /> 
        <asp:Button ID="btnAlelrt" runat="server" Text="GetDetails" OnClick="btnAlelrt_Click" />       
        </td>
        </tr>
</table>
    </ContentTemplate>
<Triggers>
    <asp:PostBackTrigger ControlID="uxTransfer" />    
    </Triggers>
    </asp:UpdatePanel>

 </asp:Content>
4

7 に答える 7

25

これ:

function ConfirmTransfere() {
        if (confirm("Syatem not allow negative inventory, would you like to continue ?") == true) {
            document.getElementById("btnAlelrt").click();

        }       

これである必要があります:

function ConfirmTransfere() {
        if (confirm("Syatem not allow negative inventory, would you like to continue ?") == true) {
            document.getElementById('<%=btnAlert.ClientID%>').click();

        }     

問題は、ボタンが ASP.Net コントロールであり、指定した ID とは異なる独自のクライアント ID を生成することです。コードを挿入すると、生成されたコード<%=btnAlert.ClientID%>がブラウザに送信されます。

于 2009-07-13T11:53:09.613 に答える
7

あなたはこれを使うことができます:

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

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

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

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

<span id="Label1" name="ctl00$MasterPageBody$ctl00$Label1" />
于 2013-01-18T14:22:13.087 に答える
3

asp:Button に指定する ID は、サーバー上で ASP.Net によって使用される ID です。クライアント スクリプトで使用されるのは ID ではありません。

以下を使用する必要があります。

document.getElementById("<%= btnAlelrt.ClientID %>").click();
于 2009-07-13T11:54:08.127 に答える
3

生成されたページでソースを表示すると、ボタンの ID "btnAlelrt" がなくなっていることがわかるでしょう。「ctl001_btnAlert」のようなもの、またはその他の生成された一意の識別子が含まれる場合があります。

これが、JavaScriptがそれを見つけられない理由です。

タグで検索し、ID が btnAlelrt で終わっているかどうかを確認するか、変更されない ID でその周りに DIV または SPAN を配置する必要があります (つまり、 runat="サーバー")。次に、その要素を ID で検索し、その中のボタンを取得できます。

可能であれば、<%=btnAlelrt.ClientID%> 構文を使用して、JavaScript に適切な ID を挿入できます。

(補足: これは btnAlert のはずでしたか?)

于 2009-07-13T11:56:12.430 に答える
1

現時点で投稿できるコードサンプルは見つかりませんが、問題について説明することはできます。

ASP.NETは、オブジェクト/ element /ボタンに与えるIDをページに書き込むときに使用せず、代わりにオブジェクトにクライアントIDを与えます。

コードでMsgbox(btnAlelrt.clientID)を実行すると、JavaScriptで使用するオブジェクト名が表示されます。

これらの値は定数ではないため、.NETコードでJavaScriptでページに書き出すことをお勧めします。

お役に立てれば。

ジェームズ

于 2009-07-13T11:59:51.407 に答える
1

レンダリングされたページを見ると、btnAlelrt というコントロールにはその名前がありません...

"<%=" を追加すると、コントロールの C# 名にアクセスできるようになり、動作するはずです。

于 2009-07-13T11:53:19.907 に答える