javascript sélecteurs
Comment sélectionner des éléments du DOM en javascript?
Comme par exemple:
<div class="des">
<h1>Test</h1>
<div class="desleft">
<p>Lorem Ipsum.</p>
</div>
<div class="Right">
<button>Test</button>
</div>
</div>
Maintenant, comment puis-je sélectionner h1
? C'est juste une partie d'une plus grande Page, donc ne peut pas utiliser getElementsByTagName()
, puisque les autres peuvent avoir sélectionné. Aussi car il pourrait y avoir d'autres h1
's dans le document plus tard, je ne peux pas joindre l'index(du corps) ci-dessus.
Est-il un moyen simple de choisir, de dire <h1>
balise qui est sous le nom de classe de desleft
?
Je ne peux pas utiliser jQuery ou toutes les autres bibliothèques.
- Il n'est tout simplement pas productif de ne pas utiliser une sorte de sélecteur de bibliothèque moderne de programmation javascript. Si vous ne pouvez pas utiliser jQuery, alors au moins utiliser le Grésillement qui est juste un sélecteur moteur (et c'est ce qui est utilisé à l'intérieur de jQuery et YUI). Elle est très petite et vous permettra d'économiser des centaines d'heures de développement, de prévenir beaucoup de bugs et de vous sauver de beaucoup de croix-les problèmes de navigateur. Il est tout simplement pas productif de réinventer la roue vous-même.
- Oui, je suis absolument d'accord. J'ai eu le sentiment qu'il y avait des façons de le faire, et je ne sais pas d'eux.
- Dans l'un de ces sélecteur de bibliothèques, vous utilisez simplement le sélecteur:
".des h1"
pour accéder à la<h1>
objet dans votre exemple. Dans Grésillement, il serait tout simplement:var list = Sizzle(".des h1");
. - Vous n'avez probablement pas besoin d'une bibliothèque: caniuse.com/#search=querySelector
Vous devez vous connecter pour publier un commentaire.
Serait une fonction que vous pouvez commencer avec, et puis vous pouvez filtrer les DOMElements qui ont la classe.
La
.indexOf
fonction renvoie-1
si l'aiguille ne se trouve pas dans la botte de foin.Maintenant re-lecture de votre question, pourquoi ne pas simplement donner votre h1 id ?
DOM traversée est l'un des javascript est flagrante questions (entrée jQuery).
un simple
getElementById()
serait vous faire économiser des maux de tête et des id sur tous vos h1 serait beaucoup plus propre en fin de compte que d'essayer de formuler un algorithme pour les sélectionner par d'autres moyens.Vous pouvez utiliser pour obtenir votre H1:
w3.org a sélecteurs maintenant (http://www.w3.org/TR/selectors-api/#examples). Voici 2 façons différentes de ce qui a fonctionné pour moi sur Chrome. Vous souhaiterez peut-être utiliser querySelectorAll fonction qui retourne une liste.
Utilisation querySelectorAll
Vous pouvez utiliser
querySelectorAll
:Cela renvoie un NodeList.
ou
Utilisation
querySelector
de retourner le premier élément trouvé:Couramment utilisé avec un sélecteur d'id
#single-header-id
.Voici une démo
Si vous voulez sélectionner un
h1
qui est avant la première élément de classedesleft
, vous pouvez toujours le faire:Exemple: http://jsfiddle.net/Xeon06/ZMJJk/
previousSibling
doit être appelé deux fois en raison de la zone de texte vide nœud entre les deux. C'est pourquoi l'utilisation de bibliothèques de faire ce genre de choses est vraiment la meilleure façon d'aller.getElementsByClassName
est uniquement pris en charge > firefox 3