XML DOM定位nod
- Föregående sida DOM webbläsare
- Nästa sida DOM hämta nod
Kan lokaliseras genom att använda relationer mellan noder.
Exempel
Nedanstående exempel använder XML-filer books.xml.
Funktion loadXMLDoc()Ligger i extern JavaScript, används för att ladda XML-filer.
- Få tag på en nodas föräldernode
- Detta exempel använder parentNode-attributet för att hämta föräldern till en nod.
- Hämta den första undernoden till en nod
- Detta exempel använder firstChild() metod och en anpassad funktion för att hämta den första undernoden till en nod.
Navigera DOM-noder
Genom att använda relationer mellan noder kan man komma åt noder i nodträdet, vilket ofta kallas nodnavigering ("navigating nodes").
I XML DOM definieras nodrelationer som egenskaper för noder:
- parentNode
- childNodes
- firstChild
- lastChild
- nextSibling
- previousSibling
Följande bild visar books.xml En del av nodträdet och förklarar nodernas relationer:

DOM - föräldernod
Alla noder har endast en föräldernod. Följande kod lokaliserar föräldern till <book>:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; document.write(x.parentNode.nodeName);
Försök att förklara:
- Genom att använda loadXMLDoc() Lägg till "books.xml" laddas in i xmlDoc
- Hämta den första <book>-elementet
- Utskriv namnet på föräldern till noden "x"
Undvik tomma textnoder
Firefox och några andra webbläsare betraktar tomma blanka eller radbrytningssymboler som textnoder, medan IE inte gör det.
Detta kan skapa ett problem när följande egenskaper används: firstChild, lastChild, nextSibling, previousSibling.
För att undvika att定位 till en tom textnod (utrymme och radbrytningssymboler mellan elementnoder), använder vi en funktion för att kontrollera nodtypen:
function get_nextSibling(n) { y=n.nextSibling; while (y.nodeType!=1) { y=y.nextSibling; } return y; }
Med ovanstående funktion kan vi använda get_nextSibling(node) för att ersätta node.nextSibling-egenskapen.
Kodförklaring:
Elementnodens typ är 1. Om den närmaste noden inte är en elementnod, flyttas till nästa nod tills en elementnod hittas. På detta sätt kan samma resultat fås i både IE och Firefox.
Hämta den första elementet
Följande kod visar den första <book>-elementets första elementnod:
<html> <head> <script type="text/javascript" src="loadxmldoc.js"> </script> <script type="text/javascript"> //kontrollera om den första noden är en elementnod function get_firstChild(n) { y=n.firstChild; while (y.nodeType!=1) { y=y.nextSibling; } return y; } </script> </head> <body> <script type="text/javascript"> xmlDoc=loadXMLDoc("books.xml"); x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]); document.write(x.nodeName); </script> </body> </html>
Output:
title
Försök att förklara:
- Genom att använda loadXMLDoc() Lägg till "books.xml"Ladda xmlDoc"
- Använd get_firstChild-funktionen på den första <book>-taggen för att få den första barnnoden i elementnoden
- Output namnet på den första barnnoden (en elementnod)
Exempel
Följande exempel använder liknande funktioner:
- Föregående sida DOM webbläsare
- Nästa sida DOM hämta nod