2012-04-15 4 views
0

Ich habe einige Ajax-Code in einem HTML-Dokument, das den Text einer Schaltfläche in Text in einem anderen HTML-Dokument in der gleichen Domäne ändert. Der Text ist in dem Body-Tag des zweiten html document.Like dies:Ajax html Domparser

<body> Text</body> 

So ist der Code macht eine Ajax-Anforderung, parst die Antwort ein xmldoc zu erstellen. Wenn ich versuche, das

zu verwenden, erhalte ich eine empty HTMLcollection. Aber wenn ich die Verwendung

queryselector("body") I can get to the text. The log to console prints undefined. 

Hier ist der vollständige Code:

function gettxt() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    { 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET", "http://localhost/ajax2.html", true); 
xmlhttp.onreadystatechange = function() 
{ 
    if (xmlhttp.readyState === 4) { 
    if (xmlhttp.status === 200) 
    { 
     allText = xmlhttp.responseText; 
    var parser = new DOMParser(); 
    var xmlDoc = parser.parseFromString(allText, "application/xml");    
    var bodyobj=xmlDoc.getElementsByTagName("body"); 
    console.log(bodyobj.lemgth);       
     document.getElementById("secbtn").value=bodyobj;   
    } 
    } 
} 

xmlhttp.send(null); 

} 

Was bin ich? Vielen Dank.

+0

Sie loggen 'bodyobj.lemgth' .. sollte das nicht' bodyobj.length' sein? – Torious

+0

Und der verwendete Browser ist Firefox 11.0. – sotn

+0

Torious, Ihr Recht die Rechtschreibung ist falsch. Ich weiß, was ich falsch gemacht habe. Ich habe den Text der Schaltfläche auf bodyobj anstelle von bodyobj [0] .innerHTML gesetzt. Eine Sache, die mich abwarf, war der Firebug Watch Tab. Es zeigt die Variable bodyobj nach der Zeile var bodyobj = xmlDoc.getElementsByTagName ("body"); wird als 'undefiniert' anstelle von 'HTMLCollection' ausgeführt. Wer weiß, warum das ist? – sotn

Antwort

0

Ich weiß, was ich falsch gemacht habe. Ich habe den Text der Schaltfläche auf bodyobj anstelle von bodyobj [0] .innerHTML gesetzt.