2009-11-03 14 views
5

Sto tentando di utilizzare il metodo getElementsByTagName ("a") per ottenere tutti gli elementi con un tag specifico.Javascript getElementsByTagName

Tuttavia, non voglio tutti i tag di ancoraggio. Come potrei restringerlo in modo da selezionare solo tutti i tag di ancoraggio sotto il tag ul per il nome "someListClass"?

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

so in jQuery si può semplicemente selezionare con $ ("someListClass a").

Come lo farei senza utilizzando jQuery?

risposta

12

Lascia la tua ul un id e quindi utilizzare

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

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

element.getElementsByTagName

elements = element.getElementsByTagName(tagName); 

elementi è un NodeList live di trovate elementi nell'ordine in cui appaiono nella sottostruttura.

elemento è l'elemento da cui deve iniziare la ricerca . Si noti che solo i discendenti di questo elemento sono inclusi nella ricerca, ma non l'elemento stesso.

tagName è il nome completo per cercare per. La stringa speciale "*" rappresenta tutti gli elementi. Per compatibilità con l'XHTML , è necessario utilizzare la minuscola.

0

Senza un framework, non riesco a pensare a nessun altro modo se non eseguire manualmente ciascun elemento e iterare i suoi genitori. Se uno di loro ha la classe "somelistClass", aggiungilo allo stack. Altrimenti no.

Se stai cercando i figli di un singolo elemento, l'approccio di phoenix è la strada da percorrere.

2

è possibile utilizzare

element.getElementsByTagName(tagName) 

cui elemento è l'elemento UL ... in modo da afferrare l'elemento UL quindi cercare contrario. qualcosa di simile:

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

var theList = document.getElementById('myList'); 
var listItems = theList.getElementsByTagName('li'); 
Problemi correlati