<input id="B1" type="button" value="开始获取" onclick="hq()">
<SCRIPT language=javascript type=text/javascript>
function hq(){
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取中.."
var url="http://123.com/123/123.htm";
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
var ajx1=xmlHttp.responseText;
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
}
</script>
我的意图是当点击“ 开始获取”按钮时,该按钮先变成“ 获取中..”;
然后开始执行ajax,执行完后,该按钮的标题改为“ 获取结束”。
可是由于优先级问题,程序并没有按照我的意图执行。程序 先执行ajax, 然后执行document.getElementById("B1").value ="获取中.."。
请问应该怎样修改该程序,才能使程序 先执行document.getElementById("B1").value ="获取中..", 然后执行ajax?
7 个解决方案
#1
我用JQUERY。JS
一直都可以。。但是这个还真不知道,,期待高手。。。另外说下,如果你用的是异步。。你
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
这句不一定会是在AJAX之后,,也许会在之前
一直都可以。。但是这个还真不知道,,期待高手。。。另外说下,如果你用的是异步。。你
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
这句不一定会是在AJAX之后,,也许会在之前
#2
怎么会呢?你这个ajax请求都设置成false了,程序应该就是按顺序执行的
#3
我在开发的过程中也遇到了这样的问题,我分析是解释器引擎的优化作用结果,如果你把异步请求的那段代码随便换成alert什么的 这个是好用的
#4
你可以设置一个函数来更改成获取中 然后用callback来进行Ajax请求
#5
有人知道吗?
#6
这样试试:
<input id="B1" type="button" value="开始获取" onmousedown="hq(0);" onmouseup="hq(1);">
<SCRIPT language=javascript type=text/javascript>
function hq(n){
if(n==0){
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取中.."
return;
}
var url="http://123.com/123/123.htm";
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
var ajx1=xmlHttp.responseText;
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
}
</script>
<input id="B1" type="button" value="开始获取" onmousedown="hq(0);" onmouseup="hq(1);">
<SCRIPT language=javascript type=text/javascript>
function hq(n){
if(n==0){
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取中.."
return;
}
var url="http://123.com/123/123.htm";
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
var ajx1=xmlHttp.responseText;
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
}
</script>
#7
这个我估计不同的浏览器会有区别,当然你这里用的是ActiveXObject,针对的就是ie
以前了解过ie6对dom的处理要滞后于bom,即使指向同一个元素,ie6之后的版本就没有了解过(没写js很久了)
mozilla因为没有bom(新版ff4好像有了),所以……换浏览器测试一下看看
不知道这个认知现在是否不合时代了,呵呵
以前了解过ie6对dom的处理要滞后于bom,即使指向同一个元素,ie6之后的版本就没有了解过(没写js很久了)
mozilla因为没有bom(新版ff4好像有了),所以……换浏览器测试一下看看
不知道这个认知现在是否不合时代了,呵呵
#1
我用JQUERY。JS
一直都可以。。但是这个还真不知道,,期待高手。。。另外说下,如果你用的是异步。。你
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
这句不一定会是在AJAX之后,,也许会在之前
一直都可以。。但是这个还真不知道,,期待高手。。。另外说下,如果你用的是异步。。你
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
这句不一定会是在AJAX之后,,也许会在之前
#2
怎么会呢?你这个ajax请求都设置成false了,程序应该就是按顺序执行的
#3
我在开发的过程中也遇到了这样的问题,我分析是解释器引擎的优化作用结果,如果你把异步请求的那段代码随便换成alert什么的 这个是好用的
#4
你可以设置一个函数来更改成获取中 然后用callback来进行Ajax请求
#5
有人知道吗?
#6
这样试试:
<input id="B1" type="button" value="开始获取" onmousedown="hq(0);" onmouseup="hq(1);">
<SCRIPT language=javascript type=text/javascript>
function hq(n){
if(n==0){
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取中.."
return;
}
var url="http://123.com/123/123.htm";
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
var ajx1=xmlHttp.responseText;
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
}
</script>
<input id="B1" type="button" value="开始获取" onmousedown="hq(0);" onmouseup="hq(1);">
<SCRIPT language=javascript type=text/javascript>
function hq(n){
if(n==0){
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取中.."
return;
}
var url="http://123.com/123/123.htm";
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
var ajx1=xmlHttp.responseText;
document.getElementById("B1").disabled =true;
document.getElementById("B1").value ="获取结束"
}
</script>
#7
这个我估计不同的浏览器会有区别,当然你这里用的是ActiveXObject,针对的就是ie
以前了解过ie6对dom的处理要滞后于bom,即使指向同一个元素,ie6之后的版本就没有了解过(没写js很久了)
mozilla因为没有bom(新版ff4好像有了),所以……换浏览器测试一下看看
不知道这个认知现在是否不合时代了,呵呵
以前了解过ie6对dom的处理要滞后于bom,即使指向同一个元素,ie6之后的版本就没有了解过(没写js很久了)
mozilla因为没有bom(新版ff4好像有了),所以……换浏览器测试一下看看
不知道这个认知现在是否不合时代了,呵呵