繁体   English   中英

为什么我在IE中收到此“空或非对象”错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM