0

全て、

HTML ページのテキストを変更するかなり単純な JavaScript スクリプトがあります。奇妙なことに、アラートがある場合にのみデータが変更されます。アラートをコメントとして非表示にすると、データは Web ページに表示されません。具体的には、JS コードの関連部分を次に示します。

var index=0;
var xmlObject=null;

function calcIndex(){
  return index++;
}

function showNextName(){
  retrieveNextName();
  var someText = xmlObject.getElementsByTagName("name")[0].childNodes[0].nodeValue;
  document.getElementById('nextName').innerHTML=someText;
}

function retrieveNextName(){
  var index=calcIndex();
  request = createRequest();
  if (request == null) {
    alert("Unable to create request");
    return;
  }
  var url= "Ajax_retrieveName.php?index=" + index;
  request.open("GET", url, true);
  request.onreadystatechange = createXml;
  request.send(null);
  alert("abc");
  //If the alert above is missing, the html is not modified...
}

function createXml() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      xmlObject = request.responseXML;
    }else{
      return;
    }
  }else{
    return;
  }
}

誰がそれを引き起こしているのか知っていますか?

4

1 に答える 1

0

問題は、リクエストがまだ完了していないため、コールバックがまだ呼び出されていないため、XML オブジェクトをすぐに使用できないことです。(アラートを使用すると、アラート ボックスを閉じる前の時間内にリクエストを終了できます。)

より良い解決策は、 updateElementHtml(newHtml) 関数を用意して、コールバックから呼び出すことです。

于 2013-01-26T01:38:37.240 に答える