JavaScript innerHTML问题

JavaScript innerHTML问题,javascript,dom,Javascript,Dom,我有一段代码,将div标记的内部HTML更改为状态消息,这被封装在try方法中,唯一的问题是状态保持可见大约3秒钟,然后消失。我想这是由于尝试的方法,有什么办法可以阻止这一切吗 <script> function goCouch(form){ var xmlHttp = false; try { var couchURL = form.inputbox.value;

我有一段代码,将div标记的内部HTML更改为状态消息,这被封装在try方法中,唯一的问题是状态保持可见大约3秒钟,然后消失。我想这是由于尝试的方法,有什么办法可以阻止这一切吗

<script> 
        function goCouch(form){

            var xmlHttp = false; 
                try {
                    var couchURL = form.inputbox.value;

                    xmlHttp = new XMLHttpRequest();
                    xmlHttp.open( "GET", "http://" + couchURL + ":5984", false );
                    xmlHttp.send( null );
                    var couchWelcome = xmlHttp.responseText;
                    var requestedServerStatus = xmlHttp.status;

                    var status = document.getElementById("status")
                    status.innerHTML = couchWelcome;

                    //alert(requestedServerStatus);
                    //alert(couchWelcome); 
                } catch (failed) {
                  xmlHttp = false;
                }

                if (!xmlHttp){
                  //alert("Don't panic, but I can't connect to that server.");
                }
            }
        </script>

<div id="mainContent">


            <form action="" method="get" id="myform">
                Enter your database URL<br>
                <input type="url" name="inputbox" value="">
                <input type="submit" name="button" value="Go" onclick="goCouch(this.form)"></p>
            </form>

            <div id="status"></div>
        </div>

功能表(表格){
var xmlHttp=false;
试一试{
var couchURL=form.inputbox.value;
xmlHttp=新的XMLHttpRequest();
open(“GET”,“http://“+couchURL+”:5984”,false);
xmlHttp.send(空);
var couchWelcome=xmlHttp.responseText;
var requestedServerStatus=xmlHttp.status;
var status=document.getElementById(“状态”)
status.innerHTML=couchWelcome;
//警报(requestedServerStatus);
//警惕(couchWelcome);
}捕获(失败){
xmlHttp=false;
}
如果(!xmlHttp){
//警报(“不要惊慌,但我无法连接到该服务器。”);
}
}
输入您的数据库URL


您的onClick处理程序被附加到表单的提交按钮

由于您不返回false,或以其他方式阻止默认事件操作,因此我认为发生的情况如下:

  • 单击该按钮,onClick处理程序开始运行
  • 处理程序执行同步XHR请求,从服务器获取响应,并更新div
  • 控件传递回浏览器,浏览器继续提交表单
  • 由于表单操作是“”,浏览器实际上会重新加载页面
  • 重新加载页面时,消息将消失

要解决此问题,请在Gocoach函数的末尾添加“
return false
”。

您的提交按钮将提交表单,这将导致页面重新加载。如果在函数末尾添加一个
return false
gotToCouch
,则不应进行提交(对此不能100%确定)


除此之外,您正在执行一个ajax请求,但您没有使用回调函数返回结果,而是强制请求同步。。。这可能不会导致任何问题,但会停止浏览器,直到请求得到响应,只需说…

为了防止默认操作,您可以使用该功能

event.preventDefault()

我会改变你的按钮类型

<input type="button" name="button" value="Go" onclick="goCouch(this.form)">


如果您确实需要提交表单,您可以在javascript中执行
form.submit()

看不到其他情况,但首先确保您的函数没有被调用两次或更多次。感谢您的回复,我在函数末尾添加了“return false;”,但同样的情况仍然发生!:(至少你的页面正在重新加载是真的吗?如果是,我们可以努力停止。如果不是,那么我们需要看看还有什么在发生。感谢你的回复,我在函数末尾添加了“return false;”,但同样的情况仍然会发生!:(