我通过一个按钮事件,事件很简单,就是document.getElementById("te").innerHTM向某个div中加入一个字符串,为什么当我点击按钮时,添加的字符串只是一闪一下,然后又没了。
    这是我的代码:
     <%@ Page Language="C#" AutoEventWireup="true" CodeFile="forDiv.aspx.cs" Inherits="forDiv" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
        function alertHello() {
            document.getElementById("te").innerHTML = "hello";
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alertHello()" />
    <div id="te">  </div>
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    回发,页面重新加载了。你不要用服务器端空间,写个input。
      

  2.   

    你这个是服务器端的button,所以会回发,回发之后页面就重新加载了 很正常,
     OnClientClick="alertHello();return false;" 你加个这个就好了!
      

  3.   

    <asp:Button ID="Button2" runat="server" Text="服务器控件JS" OnClientClick="alertHello();return false" />
      

  4.   

    你的按钮有两个事件,一个js,一个post
    顺序也是先js,后post
    post是可以理解为刷新页面,所以你的js在新页面里还没有调用2楼的这个
    OnClientClick="alertHello();return false;" 
    就是让你只触发js,不提交form
      

  5.   


     1. 回发简单地说就是与服务器完成一次会话或者交互的过程。
     2. <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alertHello()" />
    你把你这个button控件改成客户端的 Input控件啊,这样就不会回发了啊。
      

  6.   

    可是为什么我把按钮方法改为一个ajax方法后,那个div依旧只是闪一下就没了呢
      

  7.   

    你看这是我新写的ajax代码,可是以及只是闪一下就没了<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script language="javascript" type="text/javascript">
                var xmlText;
                var bloglist = new Array();
                function startload() {
                    if (window.ActiveXObject) {
                        xmlText = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    else if (window.XMLHttpRequest) {
                        xmlText = new XMLHttpRequest();
                    }
                    else {
                        alert("NO Object!!!");
                    }                xmlText.onreadystatechange = hanleState;
                    xmlText.open("GET", "http://www.blogjava.net/zbw25/Rss.aspx", true);
                   // xmlText.open("GET", "noContent.txt", true);
                    xmlText.send(null);
                }
                function hanleState() {
                    if (xmlText.readyState == 4 && xmlText.status == 200) {
                        document.getElementById("te").innerHTML = xmlText.responseText;
                    }            }
          </Script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="startload();" />
        </div>
        <div id="te"></div>
        </form>
    </body>
    </html>
      

  8.   

    服务器控件点时先运行javascript再回到服务器-浏览器刷新后就没有了!
      

  9.   

    你这个是服务器端的button,所以会回发,回发之后页面就重新加载了 很正常,
     OnClientClick="alertHello();return false;" 你加个这个就好了!
      

  10.   

    关键我下面用了akax,怎么还不行啊
      

  11.   

    可是你看我下面那个用了ajax阿  怎么还不行
      

  12.   

    回传服务器了应该在你的方法中加上return试试
      

  13.   

    意思是
    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alertHello()" />
    改成
    <input type="button" id="Button1" Text="Button" onclick="alertHello()">ASP.NET 尽量少用 服务器控件。就是直接从 工具箱拉过来的空间,
    回发是,服务器控件单击一下,页面会整个刷新,而html控件只负责对哪个事件执行,其他是无刷新的。多学下哦
      

  14.   

    因为你用的服务器控件的OnClientClick事件,他是在OnClick事件之前执行的。
    你的ajax执行完后,也会执行本身的OnClick事件,产生页面回传提交。
    改正方法很多:
    1.在你的OnClientClick事件中加:return false
    2.不要用服务器控件。and so on。