0

Web コントロールの次のボタンを使用しました。

<asp:Button runat="server" ID="btnSave" Text="Save" onclick="btnSave_Click"  OnClientClick="myShowWaitScreenWithNoClose('Processing...', 'Saving survey.Please wait it may take minutes..');" CssClass="buttons" Height="46px" Width="212px" Visible="false"  />

コードビハインドから JavaScript を使用してこのボタンをクリックしようとしています。お気に入り、

protected void Page_Load(object sender, EventArgs e)
{

 if (!IsPostBack)
   {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "scr", "setTimeout(function(){document.getElementById('btnSave').click(); return false;}, 180000);", true);
   }
}

しかし、それはエラーをスローしますError: TypeError: document.getElementById(...) is null

4

3 に答える 3

3

宣言した ID がレンダリングされたものと同じではないため、このエラーがスローされます。

<asp:Button runat="server" ID="btnSave" clientIdMode="static">

属性を追加しclientIdMode="static"て、宣言したとおりに ID がレンダリングされるようにします。

于 2013-03-19T15:31:15.670 に答える
1

CliendIDMode="static"を使用しない限り、クライアント側でレンダリングされるときに btnSave コントロールの ID が変更されるため、null が返される可能性が最も高い

コードを機能させるには、次のように変更する必要があります。

  if (!IsPostBack)
   {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "scr", "setTimeout(function(){document.getElementById('"+btnSave.ClientID+"').click(); return false;}, 180000);", true);
   }
于 2013-03-19T15:32:19.053 に答える
1

経由Javascriptでサーバー側のコントロールを取得するには、以下を使用します

document.getElementById('<%=btnSave.ClientID%>').click();
于 2013-03-19T15:31:20.560 に答える