<script type="text/javascript">
var tab=document.getElementById("t");
var tr=tab.getElementsByTagName('tr')[0];
var td = tr.getElementsByTagName('td');
td[3].childNodes[0].selectedIndex = 1 ; // pour IE
td[3].childNodes[1].selectedIndex = 1 ; // pour FF
</script>
mais, entre nous, tu ne te compliquerais pas la vie ?
il y a sûrement beaucoup plus simple pour accéder à ce select !
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 8 nov. 2007 à 17:27
Re moi re bonjour...
En effet erreur inévitable :
Combien as tu de td dans ton tr ?
4 oui !!! c'est gagné 3 oups !
Dans ton 4 ième td tu n'as qu'un select ?
oui !!!! youpi c'est regagné !
il ne faut pas oublier que les array commencent à 0 ...
test donc
si tu as 4 td alors
var td = tr.getElementsByTagName('td');
td[3].childNodes[0].selectedIndex = 1 ;
si tu n'as donc que 3 td
var td = tr.getElementsByTagName('td');
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 9 nov. 2007 à 09:19
OK je vais tester ça ... mais c'est quand même la misère que les indices de tableaux soient différents entre IE et FF ...
moi ça me déprime... enfin bon on a pas le choix ...
si j'accède à mon select comme ça c'est qu'en fait dans le contexte de ma page je n'ai pas d'ID ...
si tu veux j'ai un formulaire dans lequel je peux ajouter autant de lignes que je veux qui sont la copie conforme d'une première ligne mère ...
donc quand je veux accéder à un des éléments d'une ligne fille ben je suis obligé de jouer avec les indices :(:(
enfin je crois ...
du moins du haut de mon modeste niveau ...
merci à vous !
@+
cs_caviar
Messages postés329Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention29 mars 20152 9 nov. 2007 à 09:39
bon ça marche ... une fois de plus grand merci !!
tu crois que je peux déclarer une variable globale pour l'ensemble de mes scripts
genreif (ie) global var offset -1 else var offset 0
et l'utiliser indiferement dans tous mes scripts ...
td[3].childNodes[offset+1].selectedIndex = 1 ; // pour FF et IE du coup
Vous n’avez pas trouvé la réponse que vous recherchez ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 9 nov. 2007 à 12:23
Bonjour,
Le probléme vient de la façon qu'on les explorateurs de gérer le Noeud Text Vide...
IE ignore les noeuds text vide mais pas FireFox.
Dans ton cas childNode[0] correspond a un nodeName "SELECT", donc un nodeType 1, sous IE et à un nodeName "#text", donc un nodeType 3, sous FF.
La façon d'écrire tes lignes génére ou non un #text sous
FF
.
Exemple: <tr><td><select>....</select></td></tr>
...ne génére pas de #text sous
FF
<tr>
#text
<td>
#text
<select>....</select>
#text
</td>
#text
</tr>
..en génére.
Si tu veux que le code marche pour les deux, dans ton contexte, alors
- concaténe tes lignes sans espace, exemple #1 ci dessus
- supprime les noeuds vide avant utilisation de childNode[0]
Nota : le même problème est souvent rencontré lors que l'on lit une réponse issu d'un fichier XML
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 9 nov. 2007 à 13:37
>>IE ignore les noeuds text vide mais pas FireFox.
voilà, PetOleteam a parfaitement expliqué le pourquoi de la chose
>>...ça ça marcherait sur tous les navigateurs...
tu parles document.getElementsByTagName("select")[0] ?
===> à l'index près ( [0] c'est le 1er select )
sur la plupart des versions qui ne datent pas de la guerre 14 en tous cas
aussi bien (!?!) que childNodes en tous cas aussi !
<hr /> Cordialement Bul [mon Site] [M'écrire]