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.
Sie loggen 'bodyobj.lemgth' .. sollte das nicht' bodyobj.length' sein? – Torious
Und der verwendete Browser ist Firefox 11.0. – sotn
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