JavaScript côté de la fratrie?
Quelqu'un pourrait-il me montrer comment faire une boucle par le biais de l'ancrage des balises à l'intérieur d'un div et de trouver la prochaine frère?
J'ai jusqu'à présent.
var menu = document.getElementById('menu');
var links = menu.getElementsByTagName('a');
Comment puis-je faire une boucle par les liens? Puis-je utiliser .nextSibling
à trouver si le frère suivant est un div?
Vous feriez mieux d'utiliser certains JavaScrip bibliothèque jQuery par exemple
Je ne peux pas dans cette situation, généralement je. Cette juste montrer ma dépendance à ces bibliothèques...
Le frère suivant de quoi?
La balise d'ancrage. si la balise après l'un est un " div " j'ai besoin d'une action se produise.
Vous souhaitez utiliser nextElementSibling plutôt que nextSibling. nextSibling comprend également des nœuds de texte et les nœuds de commentaires. nextElementSibling ignore le texte et les commentaires.
Je ne peux pas dans cette situation, généralement je. Cette juste montrer ma dépendance à ces bibliothèques...
Le frère suivant de quoi?
La balise d'ancrage. si la balise après l'un est un " div " j'ai besoin d'une action se produise.
Vous souhaitez utiliser nextElementSibling plutôt que nextSibling. nextSibling comprend également des nœuds de texte et les nœuds de commentaires. nextElementSibling ignore le texte et les commentaires.
OriginalL'auteur JasonS | 2010-10-29
Vous devez vous connecter pour publier un commentaire.
La
nextSibling
propriété de nœuds DOM fonctionne parfaitement dans tous les navigateurs et fait exactement ce que vous attendez. Si il n'y a pas de frère suivant, il retournenull
.De parcourir un
NodeList
(qui est ce quegetElementsByTagName
rendements) est identique à une itération sur un tableau à l'aide d'unfor
boucle. Le suivant va itérer sur les liens et d'alerte à chaque fois qu'il en trouve un dont le frère suivant est un<div>
:Remarque que dans la non-IE navigateurs, les espaces entre les éléments HTML est considéré comme un nœud de texte. Vous pouvez ignorer ces espaces nœuds lors de l'examen de ce que le frère suivant de chaque lien. La suite ne sera que:
Eh bien, je suppose que vous pourriez dire que c'était incorrect pour cette raison, mais un nœud de texte est toujours un noeud autant que n'importe quel autre nœud, même si elle ne fait que contenir d'espaces. Le vrai problème est que IE ne compte pas les espaces les nœuds de texte comme de véritables nœuds DOM, tandis que tous les autres navigateurs. Il est certainement intéressant de souligner, donc je vais modifier ma réponse.
Modifié ma réponse. Je pense que vous ne voulez ignorer les espaces les nœuds de texte, pas un nœud de texte (comme dans votre jsfiddle exemple).
Down: je crois que ce que vous avez écrit est correct, c'est pourquoi j'ai jusqu'a voté. Mais assumé, même si je ne devrais pas, c'est qu'ils ne veulent pas prendre le nœud de Texte en considération. Ma réponse a été mal écrit, j'aurais juste dit "Fais cela, si vous souhaitez contourner les nœuds de Texte" au lieu d'insinuer que votre réponse n'était pas correcte. Désolé à ce sujet.
Vous avez fait un bon point. Pas besoin de s'excuser pour quoi que ce soit.
OriginalL'auteur Tim Down
OriginalL'auteur infinity