-2
var showBoth = function(str, x) {
       showgrade(str, x);
       showsize(str, x);
     }

我试过这个:

var showBoth = function(str, x) {`enter code here`
        showgrade(str, x);
        setTimeout(function(){showsize(str, x)},500);
     }

但是settime如果showgrade花费太多时间,它将停止并运行showsize.

showsize运行完成后如何showgrade运行?

这是我的全部功能

 function showsize(str,x)
    {
        if (str=="")
          {
          document.getElementById("txtHintsize"+x+"").innerHTML="";
          return;
          } 
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("txtHintsize"+x+"").innerHTML=xmlhttp.responseText;
            }
          }

        xmlhttp.open("GET","Function/ShowSize.php?q="+str,true);
        xmlhttp.send();
    }
    function showgrade(str,x)
    {
        if (str=="")
          {
          document.getElementById("txtHintgrade"+x+"").innerHTML="";
          return;
          } 
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("txtHintgrade"+x+"").innerHTML=xmlhttp.responseText;
            }
          }

        xmlhttp.open("GET","Function/ShowGrade.php?q="+str,true);
        xmlhttp.send();
    }
     var showBoth = function(str, x) {
        showgrade(str, x);
        setTimeout(function(){showsize(str, x)},500);
     }
4

2 回答 2

1

改变你的showgrade功能是xmlhttp.onreadystatechange这样的

xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("txtHintgrade" + x + "").innerHTML = xmlhttp.responseText;
    }
    showsize(str, x);
}

当 AJAX 请求返回响应时,它将调用onreadystatechange函数,这将标记函数的结束。因此,我们只需showsize从该函数调用。

于 2013-10-12T11:23:11.740 回答
0

尝试这个:

var showBoth = function(str, x) {`enter code here`
    showgrade(str, x, function(){ showsize(str, x); });
 }

然后将您的 showgrade 更改为如下所示:

function showgrade(str, x, callback){
   //DO WHAT YOU WANT HERE
   callback.call();
}
于 2013-10-12T10:00:49.550 回答