2013-11-26 69 views
0

這裏是我的XML在JavaScript進去一個又一個只有節點

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<book> 
<title>My Title</title> 
<description></description> 
    <chapter> 
    <title>Chapter 1</title> 
    <description>text inside chapter</description> 
    </chapter> 
</book> 

所以我試圖讓信息裏面<chapter>標籤

這裏是我的代碼:

function afficheTitres(doc) { 
    Items = doc.getElementsByTagName("chapter"); 
    elementol = document.createElement("ol"); 
    var longueur = Items.length; 
    for (k = 0; k &lt; longueur ; ++k) { 
    elementli = document.createElement("li"); 

x=doc.getElementsByTagName("title")[k]; 
var longueurtitre = x.length; 
y=x.childNodes[0]; 
txt=y.nodeValue; 
test = document.createTextNode(txt) 
elementli.appendChild(test); 

    elementretour = document.createElement('br'); 
     elementli.appendChild(elementretour 
    ); 

descript=doc.getElementsByTagName("description")[k]; 
descriptNode=descript.childNodes[0]; 
txt2=descriptNode.nodeValue; 
test2 = document.createTextNode(txt2) 
elementli.appendChild(test2); 

    elementol.appendChild(elementli); 
    } 
    body = document.getElementsByTagName("body").item(0); 
    body.appendChild(elementol); 
} 

的問題是這些行:

x=doc.getElementsByTagName("title")[k]; 

descript=doc.getElementsByTagName("description")[k]; 

得到了「BOOK」部分,不是來自章節信息。

我確定有人知道如何得到這個。

感謝

+2

你爲什麼要爲它標記node js? – tomahim

+0

@tomahim我的想法,我已經刪除它。 – robertklep

+0

對不起,我知道,我犯了一個錯誤。 – baronming

回答

0

在你的代碼使用的似乎是一些從document對象繼承doc變量,看the reference

.getElementsByTagName("title")方法返回的標籤title陣列,其不出現的方式在chapter,而且在根元素,book

從章節點搜索,而不是從DOC

var chapters = doc.getElementsByTagName("chapter"); 
for(var i=0; i<chapters.length; ++i) { 

    // search from book, which is what you don't want 
    // doc.getElementsByTagName("title")[0]; 

    // search from chapter, you want this 
    chapters[i].getElementsByTagName("title")[0]; 
} 

注意

在新的瀏覽器(IE8 +),如果你使用.querySelectorAll()方法,你可以節省自己很多的痛苦(這順便說一句呈現jQuery過時的很大一部分)。

var titles = doc.querySelectorAll("chapter title"); 
alert(titles[0].innerHTML); // Chapter 1 
0

你試過先得到章節的採集:

var chapters =doc.getElementsByTagName("chapter"); 

然後通過每章迭代找到集合中該實例的子節點?

if (chapters.length > 0) 
{ 
    for (i = 0; i < resultList.length; i++) 
    { 
     var title = chapters[i].getElementsByTagName("title")[0]; 
     var desc = chapters[i].getElementsByTagName("description")[0]; 

     // do work here 
    } 
} 
相關問題