我在网页控件上关注了按钮,
<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
答案 0 :(得分:3)
它会抛出此错误,因为您声明的ID与呈现的ID不同。
<asp:Button runat="server" ID="btnSave" clientIdMode="static">
添加clientIdMode="static"
属性,以便您的ID与您声明的ID完全一致。
答案 1 :(得分:1)
要通过Javascript
获取服务器端控件,请使用以下
document.getElementById('<%=btnSave.ClientID%>').click();
答案 2 :(得分:1)
最有可能返回null,因为btnSave控件的id在客户端呈现时会被更改,除非您使用CliendIDMode="static"
要使代码正常工作,您需要将其更改为:
if (!IsPostBack)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "scr", "setTimeout(function(){document.getElementById('"+btnSave.ClientID+"').click(); return false;}, 180000);", true);
}