2009-11-03 8 views
5

Ich versuche, die GetElementsByTagName ("a") -Methode zu verwenden, um alle Elemente unter einem bestimmten Tag zu erhalten.Javascript getElementsByTagName

Allerdings möchte ich nicht jedes Anker-Tag. Wie würde ich es eingrenzen, so dass ich nur alle Anker-Tags unter dem UL-Tag für "SomeListClass" Name auswählen?

<ul class="someListClass"> <li><a href... /></li>... </ul>

Ich weiß, in jQuery können Sie nur mit $ wählen ("someListClass a").

Wie würde ich es tun ohne mit jQuery?

Antwort

12

Ihre ul eine ID Geben und dann

<ul id="ulid" class="someListClass"> <li><a href... /></li>... </ul> 

document.getElementById ("ulid").getElementsByTagName ("a"); 

element.getElementsByTagName

elements = element.getElementsByTagName(tagName); 

Elemente verwenden ist ein Live-NodeList gefundener Elemente in der Reihenfolge, wie sie die Unterstruktur in erscheinen.

Element ist das Element, von dem aus die Suche starten soll. Beachten Sie, dass nur die Nachkommen dieses Elements sind in der Suche enthalten, aber nicht das Element selbst.

tagName ist der qualifizierte Name, um für zu suchen. Der spezielle String "*" repräsentiert alle Elemente. Zur Kompatibilität mit XHTML sollte Kleinbuchstaben verwendet werden.

0

Ohne ein Framework kann ich mir keinen anderen Weg vorstellen, als jedes Element manuell zu durchlaufen und seine Eltern zu iterieren. Wenn einer von ihnen die Klasse "somelistClass" hat, füge sie dem Stapel hinzu. Sonst nicht.

Wenn Sie nach den Kindern eines einzigen Elements suchen, ist der Ansatz von Phoenix der richtige Weg.

2

können Sie

element.getElementsByTagName(tagName) 

verwenden, wo Element der UL Artikel ist ... so das Element gegen die dann sucht UL greifen. so etwas wie:

<ul class="someListClass" id="myList"> <li><a href... /></li>... </ul> 

var theList = document.getElementById('myList'); 
var listItems = theList.getElementsByTagName('li'); 
Verwandte Themen