Argument non valide, javascript

Résolu/Fermé
maney2002 Messages postés 5 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 2 octobre 2008 - 2 oct. 2008 à 12:11
maney2002 Messages postés 5 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 2 octobre 2008 - 2 oct. 2008 à 15:37
Bonjour,
j'essaie dans créer un liste déroulante dynamique dnt les valeurs dépendent du choix de l'utilisateur. Pour cela j'ai créé des tableaux javascripts dans lesquels je stocke les valeurs. J'ai un tableau de radios et un tableau de RER.
Le principe est le suivant, si l'utilisateur choisit radios. la liste déroulante doit afficher toutes les radios de mon tableau de radios et idem pour le choix de RER.

Jusque là tout va bien j'arrive à faire varier le tableau de sélection suivant le choix de l'utilisateur. Seuelemnt lorsque j'ai une seule valeur dans mon tableau, je n'ai pas d'erreur. Par contre si j'ai plusieurs valeurs dans mon tableau j'ai cette erreur "argument non valide".

Quelqu'un pourrait-il avoir une solution à ce problème.

Voici le code source de ma page html.


<script type="text/javascript">

var listeRER = new Array();

listeRER.push( 'paris 75016' );listeRER.push( 'Troyes 10000' );
</script>
<script type="text/javascript">
var listeradios = new Array();
listeradios.push( 'Aix en Provence 13617' );listeradios.push( 'Ajaccio 80000' );listeradios.push( 'Amiens 80000' );listeradios.push( 'Auxerre 89002' );listeradios.push( 'Avignon 84021' );listeradios.push( 'Bastia 20200' );listeradios.push( 'Bayonne 64116' );listeradios.push( 'Belfort 90008' );listeradios.push( 'Besançon 25027' );listeradios.push( 'Bordeaux 33006' );listeradios.push( 'Caen 14053' );listeradios.push( 'Chambéry 73000' );listeradios.push( 'Châteauroux 36000' );listeradios.push( 'Cherbourg Octeville 501000' );listeradios.push( 'Clermont-Ferrand 63008' );listeradios.push( 'Dijon 21000' );listeradios.push( 'Grenoble 38003' );listeradios.push( 'Gueret 23005' );listeradios.push( 'La Rochelle 17025' );listeradios.push( 'Laval 53000' );listeradios.push( 'Le Havre 76600' );listeradios.push( 'Lille 59002' );listeradios.push( 'Limoges 87012' );listeradios.push( 'lyon 69002' );listeradios.push( 'marseille 13002' );listeradios.push( 'Metz 57003' );listeradios.push( 'Mont de Marsan 40000' );listeradios.push( 'Montpellier 34011' );listeradios.push( 'Nancy 54000' );listeradios.push( 'Nantes 44200' );listeradios.push( 'Nice 06012' );listeradios.push( 'Nîmes 30020' );listeradios.push( 'Orléans 45057' );listeradios.push( 'Paris' );listeradios.push( 'Paris' );listeradios.push( 'Paris' );listeradios.push( 'Paris' );listeradios.push( 'Paris 75016' );listeradios.push( 'Paris 75016' );listeradios.push( 'Pau 64002' );listeradios.push( 'Périgueux 24003' );listeradios.push( 'Perpignan 66000' );listeradios.push( 'Poitiers 86000' );listeradios.push( 'Quimper 29101' );listeradios.push( 'Reims 51054' );listeradios.push( 'Rennes 35000' );listeradios.push( 'Rouen 76000' );listeradios.push( 'Strasbourg 67000' );listeradios.push( 'Toulon 83100' );listeradios.push( 'toulouse 31000' );listeradios.push( 'Tours 37032' );listeradios.push( 'Valence 26005' );</script>

<script type="text/javascript">
function insertRER()
{
var y=document.createElement('option');
var x=document.getElementById("select_emetteur");
x.options.length = 1;
var before=x.options[0];
for (var i=0; i<listeRER.length; i++){
y.text=listeRER[i];
y.value=listeRER[i];
try
{
x.add(y,before); // standards compliant
}
catch(ex)
{
x.add(y,i+1); // IE only
}
}
before=y;
}
</script>

<script type="text/javascript">

function insertradios(){
var y=document.createElement('option');
var x=document.getElementById("select_emetteur");
x.options.length = 1;
var before =x.options[0];
for (var i=0; i<listeradios.length; i++){
y.text=listeradios[i];
y.value=listeradios[i];
try
{
x.add(y,before); // standards compliant
}
catch(ex)
{
x.add(y,i+1); // IE only
}
}
before=y;
}

</script>

merci bien

2 réponses

GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 386
2 oct. 2008 à 14:13
Salut à toi,

je commence en râlant un peu : est-ce que tu aurais pu mettre le code HTML qui va avec. Car tester seulement le JavaScript, c'est un peu difficile.

Sinon, a ce j'ai vu, tu utilise la fonction add pour ajouter une option dans une liste. Personnellement je ne connais pas la fonction, je ne peut donc pas te dire si cela est bien correct ou non. J'utilise plutôt un code du style :
x.options[x.options.length] = y;


Cela n'étant pas le pus importe, je vais plutôt pointer le fait que tu créer une seule option, et une seule seulement, dans tes fonctions. Tu créer ton option avant ta boucle for, alors qu'il faudrait la créer à l'intérieur de la boucle.
Comme c'est fait pour l'instant, tu essaye d'ajouter plusieurs fois le même objet dans la liste, et il ce peut que le navigateur n'accepte pas cela.
0
maney2002 Messages postés 5 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 2 octobre 2008 1
2 oct. 2008 à 15:37
merci beaucoup,
effectivement le problème était que je créait mon option
à l'extérieur de la boucle "for".
En créant à l'intérieur tout fonction très bien.

En revanche pour ce qui est du code html, il est trop long. c'est pour cela que je ne l'ai pas inséré dans mon message.

Merci encore.
0