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