[英]Why am I getting this “null or not an object” error in IE?
我有一个按钮( <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。 这是发生这种情况的原因吗?
您要编写客户端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代码。
document.getElementById()
区分大小写。 尝试document.getElemenById('MyButton')
。
客户端呈现的HTML中的按钮ID是什么? ASP .NET倾向于拥有更长的自动生成的客户端ID供自己使用。 您可以做的一件事是设置按钮的name
属性,并在JavaScript中引用它。
还有一种可能的用途是使用jQuery查找.NET客户端ID的方法 。
该按钮在呈现给客户端时可能具有另一个ID。 尝试为按钮设置ClientIDMode="Static"
。 然后,该ID将与服务器端的ID相同。
在javascript / DOM中将id =“ MyButton”更改为id =“ myButton”
将脚本更改为:
<script language="javascript" type="text/javascript">
var myButton = document.getElementById('<%= myButton.ClientID %>');
myButton.click();
</script>
并将此脚本放在</body>
之前的页面末尾。
该页面可能尚未完全加载,因此当执行此代码时,“ myButton”可能尚不可用。 您可以使函数在身体负荷时调用此函数:
<body onload="functionForButton()">
或将您的脚本放在body标签的末尾:
<script language="javascript" type="text/javascript">
var myButton = document.getElementById('myButton');
myButton.click();
</script>
</body>
还要确保大小写相同。 MyButton!= myButton
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.