Comment obtenir l'élément suivant en HTML à l'aide de JavaScript?
Supposons que j'ai trois <div>
s et que j'obtienne une référence à un dans le code JavaScript, je veux savoir lequel est le suivant <div>
et lequel est le précédent.
la source
Comment obtenir l'élément suivant en HTML à l'aide de JavaScript?
Supposons que j'ai trois <div>
s et que j'obtienne une référence à un dans le code JavaScript, je veux savoir lequel est le suivant <div>
et lequel est le précédent.
Eh bien, en javascript pur, je pense que vous devez d'abord les rassembler dans une collection.
var divs = document.getElementsByTagName("div");
//divs now contain each and every div element on the page
var selectionDiv = document.getElementById("MySecondDiv");
Donc, fondamentalement, avec selectionDiv, parcourez la collection pour trouver son index, puis évidemment -1 = précédent +1 = suivant dans les limites
for(var i = 0; i < divs.length;i++)
{
if(divs[i] == selectionDiv)
{
var previous = divs[i - 1];
var next = divs[i + 1];
}
}
Attention cependant, comme je l'ai dit, une logique supplémentaire serait nécessaire pour vérifier que vous êtes dans les limites, c'est-à-dire que vous n'êtes pas à la fin ou au début de la collection.
Cela signifie également que vous avez un div qui a un div enfant imbriqué. Le div suivant ne serait pas un frère mais un enfant, donc si vous ne voulez que des frères et sœurs au même niveau que le div cible, utilisez définitivement nextSibling en vérifiant la propriété tagName .
utilisez les propriétés
nextSibling
etpreviousSibling
:Cependant, dans certains navigateurs (j'oublie lesquels), vous devez également vérifier les espaces et les nœuds de commentaire:
Les bibliothèques telles que jQuery gèrent toutes ces vérifications inter-navigateurs à votre place.
la source
div
dans le balisage peut ne pas être adjacent à l'élément; cela peut être un niveau plus profond ou un niveau supérieur.if i write dirty HTML, Javascript will act strange
que diriez-vous d'écrire du HTML propre et valide?Dépend vraiment de la structure globale de votre document.
Si tu as:
cela peut être aussi simple que de parcourir en utilisant
Cependant, si la division «suivante» peut être n'importe où dans le document, vous aurez besoin d'une solution plus complexe. Vous pouvez essayer quelque chose en utilisant
et les parcourir pour arriver où vous le souhaitez.
Si vous faites beaucoup de traversées DOM complexes telles que celle-ci, je vous recommande de rechercher une bibliothèque telle que jQuery.
la source
Il existe un attribut sur chaque HTMLElement, "previousElementSibling".
Ex:
En direct: http://jsfiddle.net/QukKM/
la source
previousSibling
semble être la solution multi-navigateurs.Ce sera facile ... c'est un pur code javascript
la source
toutes ces solutions semblent exagérées. Pourquoi utiliser ma solution?
previousElementSibling
pris en charge depuis IE9document.addEventListener
a besoin d'un polyfillpreviousSibling
pourrait renvoyer un texteVeuillez noter que j'ai choisi de renvoyer le premier / dernier élément au cas où les limites seraient brisées. Dans une utilisation RL, je préférerais qu'il renvoie un null.
la source
Je l'ai testé et cela a fonctionné pour moi. L'élément me trouvant change selon la structure du document que vous avez.
la source