0

全部,

我有一个相当简单的 javascript 脚本,可以更改我的 html 页面中的一些文本。奇怪的是,只有当我收到警报时,数据才会更改。如果我将警报隐藏为评论,则数据不会出现在网页上。具体来说,以下是相关的 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 回答