









Sur un objet DOM il existe les propriétés nextSibling et previousSibling qui renvoient respectivement le noeud DOM suivant et le noeud DOM précédent.
Le problèmes est que aussi bien l'une que l'autre ne renvoint pas que des objets DOM. En effet, ce qui est considéré comme noeud suivant (ou précédent) peut être de plusieurs formes : attribut, texte, cdata....
Voici donc 2 méthodes qui vont renverront toujours un élément DOM. Si aucun élément n'existe, c'est l'objet de départ qui sera renvoyé.
function getPrevious (obj) { if (obj.previousSibling == null) return obj; var prev=obj.previousSibling; while (prev.nodeType!=1 && prev.previousSibling != null) prev=prev.previousSibling; return prev; } function getNext (obj) { if (obj.nextSibling == null) return obj; var next=obj.nextSibling; while (next.nodeType!=1 && next.nextSibling != null) next=next.nextSibling; return next; }
Discussion