Page 1 sur 1

Problème avec nextSibling, previousSibling [RESOLU]

Publié : 27 sept. 2005, 16:45
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...

Publié : 27 sept. 2005, 16:51
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

Publié : 27 sept. 2005, 17:32
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: !

Publié : 27 sept. 2005, 21:04
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]

Publié : 27 sept. 2005, 21:43
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: ...

Publié : 28 sept. 2005, 11:17
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).