为什么我在IE中出现“null或not object”错误?

时间:2010-12-16 18:05:07

标签: javascript asp.net onload

我有一个按钮(<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。这就是发生这种情况的原因吗?

7 个答案:

答案 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中引用该属性。

a method of finding a .NET client ID using jQuery也可能对您有用。

答案 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