Problème avec nextSibling, previousSibling [RESOLU]

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
MichaelP
Arias
Messages : 4
Inscription : 27 sept. 2005, 16:33

Problème avec nextSibling, previousSibling [RESOLU]

Message par MichaelP »

Bonjour,

Je voudrais accéder à une ligne d'un tableau via nextSibling et PrevSibling. Malheureusement, cela ne marche pas !

J'ai un tableau tout ce qu'il y à de plus basique...

Code : Tout sélectionner

<table>
  <tr id=tr1> 
     <td>texte</td>
     <td>texte </td>
  </tr>
  <tr id=tr2> 
     <td>texte</td>
     <td>texte </td>
  </tr>
  <tr id=tr3> 
     <td>texte</td>
     <td>texte </td>
  </tr>
</table>
Et le code suivant:

Code : Tout sélectionner

var TR = window.document.getElementById('tr2') ;
var t1 = TR.nextSibling ;
var t2 = TR.previousSibling ;
les variables t1 et t2 renvoient undefined !
J'ai essayer en déportant le code au niveau des cellules (comme indiqué dans l'aide à propos de nextSibling), mais ca ne marche pas mieux :? !

Il y a-t-il une raison spéciale à cela ? Ce code fonctionne parfaitement bien sous IE... Ca m'ennuie beaucoup de ne pas avoir l'équivalent sous Firefox...
Dernière modification par MichaelP le 27 sept. 2005, 17:33, modifié 1 fois.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

En fait il est plus que probable que le nœud suivant soit un nœud de texte (il suffit d'un espace ou retour à la ligne entre les deux balises). Tu dois donc "passer" les nœuds qui sont de type texte (3) et ne prendre que les éléments (type 1)

Voir : http://developer.mozilla.org/en/docs/DO ... t.nodeType
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
MichaelP
Arias
Messages : 4
Inscription : 27 sept. 2005, 16:33

Message par MichaelP »

Benoit a écrit :En fait il est plus que probable que le nœud suivant soit un nœud de texte (il suffit d'un espace ou retour à la ligne entre les deux balises). Tu dois donc "passer" les nœuds qui sont de type texte (3) et ne prendre que les éléments (type 1)

Voir : http://developer.mozilla.org/en/docs/DO ... t.nodeType
Heu... Ok ! D'autant plus que le noeud suivant est en fait un HR ! (enfin, ca dépends de la ligne)... C'est vrai que mon tableau n'est p't'être pas si basique que cela !

D'après ce que j'ai vus, c'est quand même moins simple avec Firefox qu'avec IE :shock: ! Je suis donc passé outre en faisant finalement autrement:

Code : Tout sélectionner

var TR = window.document.getElementById('tr2') ; 
var t1 = TR.offsetParent.rows[TR.rowIndex-1] 
var t2 = TR.offsetParent.rows[TR.rowIndex+1] 
Ca me plait moins comme solution (j'aurais voulu passer par le DOM tant qu'à faire), mais au moins ca marche sur mes deux browsers...

Merci en tout cas pour le lien ! C'est vrai que je manque cruellement de documentation concernant le developpement sous Firefox :lol: !
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

offsetParent n’est pas standard. Fais plutôt :
var TR = window.document.getElementById('tr2') ;
var t1 = TR.parentNode.rows[TR.rowIndex-1]
var t2 = TR.parentNode.rows[TR.rowIndex+1]
« La vie d’un geek est un combat perpétuel contre l’imperfection »
MichaelP
Arias
Messages : 4
Inscription : 27 sept. 2005, 16:33

Message par MichaelP »

Bobe a écrit :offsetParent n’est pas standard. Fais plutôt :
var TR = window.document.getElementById('tr2') ;
var t1 = TR.parentNode.rows[TR.rowIndex-1]
var t2 = TR.parentNode.rows[TR.rowIndex+1]
Merci pour l'info, mais ca marche bien également avec offsetParent... M'enfin, tant qu'à faire :wink: ...
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

C'est vrai qu'il y a des fonctions spéciales pour les tableaux ! Personnellement j'avais eu une interrogation dans le genre en travaillant avec une liste, et là je devais examiner les nœuds en détail, mais ce n'est pas toujours nécessaire (ouf).
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités