2015-02-08 71 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(); 

謝謝幫助!