我有一个按钮(<asp:button id="MyButton" runat="server" />
)。我希望自动点击这个按钮。所以我为此添加了JavaScript:
<script language="javascript" type="text/javascript">
var myButton = document.getElementById('myButton');
myButton.click();
</script>
我得到的错误是“Microsoft JScript运行时错误:'myButton'为null或不是对象”
此按钮所在的页面后面有一个MasterPage。这就是发生这种情况的原因吗?
答案 0 :(得分:2)
您想要编写客户端ID而不是服务器ID。
<script language="javascript" type="text/javascript">
var myButton = document.getElementById('<%=MyButton.ClientID%>');
myButton.click();
</script>
我看到,此代码将在客户端上加载按钮之前运行,因此您需要在按钮之后放置此脚本块,或者如果您使用的是jQuery或类似的东西,它们将提供文档就绪功能。文档完全加载后,将运行以下代码。
$(document).ready(function () {
var myButton = $('#<%=MyButton.ClientID%>');
myButton.click();
});
您需要设置一些属性来实现您的要求。
<asp:button
id="MyButton"
runat="server"
UseSubmitBehavior="false"
OnClientClick="return changeBackgroundColor();" />
将UseSubmitBehavior
设置为false
表示该按钮不会回发到服务器。 OnClientClick
属性与听起来一样。单击时,客户端将执行指定的JavaScript代码。
答案 1 :(得分:2)
document.getElementById()
区分大小写。试试document.getElemenById('MyButton')
。
答案 2 :(得分:0)
客户端呈现的HTML中按钮的ID是多少? ASP .NET倾向于使用更长的自动生成的客户端ID供自己使用。您可以做的一件事是设置按钮的name
属性并在JavaScript中引用该属性。
答案 3 :(得分:0)
该按钮在呈现给客户端时可能有另一个ID。尝试为按钮设置ClientIDMode="Static"
。然后,id将与服务器端相同。
答案 4 :(得分:0)
将id =“MyButton”更改为id =“myButton”案例在javascript / DOM
答案 5 :(得分:0)
将您的脚本更改为:
<script language="javascript" type="text/javascript">
var myButton = document.getElementById('<%= myButton.ClientID %>');
myButton.click();
</script>
将此脚本放在</body>
之前的页面末尾。
答案 6 :(得分:0)
页面可能没有完全加载,因此当执行此代码时,“myButton”可能尚未提供。你可以在body load上创建一个调用它的函数:
<body onload="functionForButton()">
或将您的脚本放在body标签的末尾:
<script language="javascript" type="text/javascript">
var myButton = document.getElementById('myButton');
myButton.click();
</script>
</body>
同时确保案例相同。 MyButton!= myButton