[英]select last element in DOM javascript
我是這個國家的新手,我將獲取此xml文檔的最后一個孩子,但無法獲取它,有人可以解釋為什么我的代碼對我來說似乎正確,但不知道為什么它沒有得到lastchild的消息,所以這是什么其他可能的方法,我只想從此味精中獲取talk 123
xml文件
<msg category="short">
<person1>
<time>
r
<message>Djssjs</message>
</time>
</person1>
<person2>
<time>
r
<message>1234fdg</message>
</time>
</person2>
<person1>
<time>
r
<message> talk 123</message>
</time>
</person1>
</msg>
JavaScript的
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("msg")[0].lastChild;
var m = x.childNodes[2];
document.getElementById("demo").innerHTML = m.innerHTML;
}
我不知道這里的xml
類型是什么...我假設一個包含字符串的對象。
如果我是正確的,則需要使用DOMParser進行解析。
然后,我們得到(按順序):
<msg>
標記, <person1>
, <message>
標記的innerHTML。 var xml = { responseXML: '<msg category="short"> <person1> <time> r <message>Djssjs</message> </time> </person1> <person2> <time> r <message>1234fdg</message> </time> </person2> <person1> <time> r <message> talk 123</message> </time> </person1> </msg>' }; function myFunction(xml) { // Get the response from the object. var xmlDoc = xml.responseXML; //console.log(xmlDoc); // Parse the string to HTML var parser = new DOMParser(); var xmlParsed = parser.parseFromString(xmlDoc, "application/xml"); //console.log(xmlParsed); // Get the <msg> tage var msgTag = xmlParsed.getElementsByTagName("msg")[0]; //console.log(msgTag.tagName); // Get the last child, <person1> var personLast = msgTag.lastElementChild; //console.log(personLast); // Get the <msg> innerHTML var msgLast = personLast.getElementsByTagName("message")[0].innerHTML; //console.log(msgLast); // Display in document document.getElementById("demo").innerHTML = msgLast; } myFunction(xml);
#demo{ border:1px solid black; height:6em; }
<div id="demo">Function result should be here.</div>
在此CodePen中未注釋控制台日志
正如評論中指出的那樣,這里可能存在多個問題。 不確定XML文檔,但javascript會將nextline字符視為最后一個子元素。 因此,最后一個孩子將是文字。 您可以通過在控制台上登錄x進行測試,這應該根據此處的xml修復當前功能。
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName("msg")[0].childNodes[childNodes.length-2];
var m = x.childNodes[1].childnodes[1];
document.getElementById("demo").innerHTML = m.innerHTML;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.