script优先级问题

时间:2022-10-08 05:27:29

<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之后,,也许会在之前

#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>

#7


这个我估计不同的浏览器会有区别,当然你这里用的是ActiveXObject,针对的就是ie

以前了解过ie6对dom的处理要滞后于bom,即使指向同一个元素,ie6之后的版本就没有了解过(没写js很久了)
mozilla因为没有bom(新版ff4好像有了),所以……换浏览器测试一下看看

不知道这个认知现在是否不合时代了,呵呵

#1


我用JQUERY。JS 

一直都可以。。但是这个还真不知道,,期待高手。。。另外说下,如果你用的是异步。。你

 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>

#7


这个我估计不同的浏览器会有区别,当然你这里用的是ActiveXObject,针对的就是ie

以前了解过ie6对dom的处理要滞后于bom,即使指向同一个元素,ie6之后的版本就没有了解过(没写js很久了)
mozilla因为没有bom(新版ff4好像有了),所以……换浏览器测试一下看看

不知道这个认知现在是否不合时代了,呵呵