Szybkie pytanie. Jakie jest oświadczenie JAVASCRIPT, aby uzyskać bezpośrednie dzieci z LISTY? Próbowałem:najbliższe dzieci z listy
document.getElementById(id).getElementsByTagName('li');
który daje mi wszystkie węzły podrzędne.
Szybkie pytanie. Jakie jest oświadczenie JAVASCRIPT, aby uzyskać bezpośrednie dzieci z LISTY? Próbowałem:najbliższe dzieci z listy
document.getElementById(id).getElementsByTagName('li');
który daje mi wszystkie węzły podrzędne.
pętli:
document.getElementById(id).children
i uzyskać te, które są elementy li (myślę, że wszystkie one powinny być według specyfikacji)
Myślę, że document.querySelectorAll('#id>li')
, jeśli jest obsługiwany, powinien również działać. Zobacz: http://www.w3.org/TR/selectors-api/
Node.childNodes
lub Element.children
var listItems = [];
var children = elem.childNodes;
for(var i = 0; i < children.length; i++) {
if(children[i].nodeName == "LI") {
listItems.push(children[i]);
}
}
Zwróć uwagę, że 'childNodes' zawiera wszystkie węzły i tylko elementy. – Gumbo
dzięki @Gumbo - wyjaśnię ten punkt później w odpowiedzi. Nie powinno mieć znaczenia dla małych list, ponieważ testujemy przez 'nodeName', ale może być nieskuteczne w przypadku większych list. – Anurag
Lepiej użyj 'children [i] .nodeType === Node.ELEMENT_NODE', aby upewnić się, że to naprawdę węzeł elementu. – Gumbo
Lepiej ten sam kod: &.
var listItems = [];
var children = element.childNodes;
for(var i = 0, l=children.length; i<l; ++i) {
var child = children[i];
if(child.nodeType === 1 && child.tagName === "LI") {
listItems.push(child);
}
}
Hmm, wygląda na to, że dzieci nie są częścią standardu DOM, tylko częścią gecko i być może innych silników renderujących ... childNodes jest prawdopodobnie lepszą odpowiedzią, nawet jeśli trzeba sprawdzić każdy element listy. –
tak samo jest z document.getElementById (id) .childNodes; to dostarczyłoby mi tylko najbliższe dzieci? – racky
tak, należy pamiętać, że jeśli masz zainstalowany firebug, możesz zobaczyć obie te listy w oknie podglądu na tej stronie za pomocą zegarka, takiego jak 'document.getElementsByTagName (" ul ") [0]' –