2015-02-08 70 views
1

Hy!我正在尝试使用document.getElementById innerHTML将XMLHttpRequest的结果放入div中,但没有成功。document.getElementById innerHTML不在循环中工作

在头:

XMLHttpRequest is fine (I tried document.write and it show my results). 

Here is my code : 

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.open("GET","http://www.mywebsite.com/my.php",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 

for(var i=0; i < xmlDoc.getElementsByTagName("place").length; i++) { 
name = xmlDoc.getElementsByTagName("name")[i].childNodes[0].nodeValue; 
document.getElementById('name').innerHTML += name +"<br>"; 
} 

在体:

<div id="name"></div> 

NB: my.php生成XML文件,并在更换线的document.getElementById ...通过document.write(name +“br tag”);工作正常。

感谢提前寻求帮助。

+0

你可以发布你的XML响应? – roshan 2015-02-08 11:47:39

+0

您不应该在循环中不断追加'innerHTML'(即追加到DOM)。在一个变量中构建HTML内容,并最终一次性分配给“innerHTML”。 – MrWhite 2015-02-08 11:52:16

+0

这是创建的XML的一部分: - - 宫墓PIO jpsFR 2015-02-08 12:00:00

回答

1

好吧,我发现我的错误,这里是工作代码:

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) { 
    xmlDoc=xmlhttp.responseXML; 
    for(var i=0; i < xmlDoc.getElementsByTagName("place").length; i++) { 
     var xmlName = xmlDoc.getElementsByTagName("name")[i].childNodes[0].nodeValue; 
    document.getElementById('name').innerHTML += xmlName +"<br>" 
    } 
} 
} 
xmlhttp.open("GET","http://mywebsite.com/xmlcreate.php",true); 
xmlhttp.send(); 

谢谢帮助!