所有
我有一个相当简单的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;
}
}
有谁知道可能导致什么?
答案 0 :(得分:0)
问题是XML对象不能立即可用,因为请求尚未完成,因此尚未调用回调。 (警报允许请求在您将警报框计时之前的时间内完成。)
更好的解决方案是拥有一个updateElementHtml(newHtml)函数,并在回调中从调用该函数。