Javascript getElementById给出错误'null'为null或不是对象

时间:2012-03-12 14:26:54

标签: javascript asp.net null getelementbyid

我想用javascript调用ac#函数,所以我在我的Default.aspx中添加了一个隐形的asp.net按钮,现在我想在javascript中调用它以便它会触发c#函数,但它给出了'null'为null或不是对象。我试图将我的javascript部分移动到很多地方来解决问题,但它没有用。

<asp:Content ID="HeaderContent" runat="server"
ContentPlaceHolderID="HeadContent">
</asp:Content>

    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
        <h2>        WELCOME     </h2>
     <div style="display: none;">
            <asp:Button ID="button1" runat="server"
             OnClick="btn_SearchLibrary_Click" />
     </div>

        <script type="text/javascript">
            function displaymessage() {
                var button = document.getElementById('button1');
                button.click();
            }
        </script>


<!-- Some codes in here, below there is a gridview templatefield -->



    <asp:TemplateField HeaderText="BookName"
    SortExpression="BookName" ItemStyle-Width="150px">
                                <ItemTemplate>
                                    <asp:HyperLink ID="HyperLink1"
    runat="server" Text='<%# Bind("BookName") %>'
    NavigateUrl="javascript:displaymessage()"></asp:HyperLink>
                                </ItemTemplate>
                            </asp:TemplateField>

3 个答案:

答案 0 :(得分:2)

您应该使用Ajax实现来解决这个问题。通过这种方式,您可以调用包含一些业务逻辑的Web服务,并将响应发送回客户端。

  1. 使用eq创建Web服务。 (WCF,ServiceStack)
  2. 创建按钮
  3. 使用jQuery订阅按钮的click事件并调用您的webservice。
  4. 在成功回调函数中,执行一些客户端逻辑,例如更新书籍列表。
  5. 致以最诚挚的问候,

    罗布

答案 1 :(得分:2)

试试这个

     document.getElementById('<%=button1.ClientID%>')

答案 2 :(得分:1)

虽然我强烈建议您使用ajax / WCF解决方案,但当前方法的问题很可能是按钮的ID。 ASP控件通常不会使用您在标记中指定的ID进行呈现,而是以“ct100”或“container $ id”或“container_id”作为前缀,具体取决于ASP的版本。我建议您在页面上查看源代码以查看呈现的ID,并确保将其传递给document.getElementById。