Ajouter une Option dans un Select [Résolu]

darb66 36 Messages postés lundi 28 juillet 2003Date d'inscription 23 juin 2008 Dernière intervention - 13 avril 2006 à 22:44 - Dernière réponse : darb66 36 Messages postés lundi 28 juillet 2003Date d'inscription 23 juin 2008 Dernière intervention
- 23 oct. 2006 à 15:20
Hello,

J'ai un petit script qui fonctionne tres bien avec Internet Explorer, mais qui bug avec Firefox Mozilla. J'essaie d'ajouter et d'enlever des Options dans un Select de maniere dynamique. J'utilise les fonctions javascript add() et remove() comme mentionne a l'adresse suivante : http://www.w3schools.com/htmldom/dom_obj_select.asp . Y'a-t-il un moyen de faire fonctionner tout ca sur Firefox?

Merci de votre aide...
FD
Afficher la suite 

10 réponses

Répondre au sujet
darb66 36 Messages postés lundi 28 juillet 2003Date d'inscription 23 juin 2008 Dernière intervention - 14 avril 2006 à 16:07
+3
Utile
Merci pour votre aide... j'ai remplace la fonction Add() en creant une nouvelle option que j'ajoute dans le tableau options[] de mon Select. Exemple:

Avant => document.getElementById(select_name).add(new Option(text, value), i); // Fonctionne seulement avec ie
Apres => document.getElementById(select_name).options[i] = new Option(text, value); // Fonctionne avec ie et ff

Remarque: La solution proposee permet de modifier l'option a l'indice i. Contrairement a la fonction add(), les options contenues dans le Select ne sont pas decalees...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de darb66
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 14 avril 2006 à 07:31
0
Utile
Bonjour,
remove(), par exemple, fonctionne très bien aussi avec FF [ pas testé add() ]
comment dire ce qui cloche sans un petit bout d'extrait de script ?
Cordialement. Bul. ~
Commenter la réponse de cs_bultez
Phil_Free 280 Messages postés samedi 4 juin 2005Date d'inscription 28 avril 2006 Dernière intervention - 14 avril 2006 à 09:47
0
Utile
Salut,



Sur la page que tu cites, il est bien indiqué que add() ne fonctionne ni sous FF ni sous Netscape:

Select Object Methods



Method |
Description |
IE |
F |
N |
W3C |

----

add(),
Adds an option to the dropdown list,
4,
,
,
Yes,

----

blur(),
Removes focus from the dropdown list,
4,
1,
3,
Yes,

----

focus(),
Sets focus on the dropdown list,
4,
1,
3,
Yes,

----

remove(),
Removes an option from the dropdown list,
4,
1,
6,
Yes

Par contre tu peux sans doute utiliser ceci :

Soit l'exemple suivant:
<form name="testform">
<select name="testselect">
<option value="première">première option</option>
<option value="seconde">seconde option</option>
<option value="troisième">troisième option</option>
<option>votre navigateur ne prend pas en compte ce script</option>
</select>
</form>

Pour suprimer une option:
document.forms['testform'].testselect.options[i] = null;

Pour créer une option:

document.forms['testform'].testselect.options[i] = new Option('nouveau texte','nouvelle value');
Commenter la réponse de Phil_Free
Phil_Free 280 Messages postés samedi 4 juin 2005Date d'inscription 28 avril 2006 Dernière intervention - 14 avril 2006 à 10:08
0
Utile
Si tu veux rester dans les standards, tu peux aussi utiliser ceci:

elOptNouv.text = 'Option3';
elOptNouv.value = 'Opt3';

try {
document.getElementById('selectX').add(elOptNouv, null); // ne fonctionne pas sous IE
}
catch(ex) {
document.getElementById('selectX').add(elOptNouv); // fonctionne sous IE seulement
}

Mais alors il faut donner un id à ton select, comme ça:

<select id="selectX" size="10" multiple="multiple">
<option value="option1" selected="selected">Opt1</option>
<option value="option2">Opt2</option>
</select>
Commenter la réponse de Phil_Free
pagextchab2 10 Messages postés mardi 26 septembre 2006Date d'inscription 18 octobre 2006 Dernière intervention - 18 oct. 2006 à 16:31
0
Utile
Voilà mon code et explorer tombe dans le catch mais n'affiche aucune erreur :

        var elOptNouv = document.createElement('OPTION');
       
        elOptNouv.text = 'AUCUNE LISTE';
        elOptNouv.value = '0';
       
        try {
            w.forms["frm"].document.getElementById(strElement).add(elOptNouv);
        }
        catch(error) {
           
            alert(error.message);
        }

S.V.P. Venz à ma recousse !!! 
Commenter la réponse de pagextchab2
darb66 36 Messages postés lundi 28 juillet 2003Date d'inscription 23 juin 2008 Dernière intervention - 18 oct. 2006 à 19:01
0
Utile
Si tu accedes au select en utilisant document.getElementById() alors il n'est pas necessaire de faire appelle a w.forms['']
J'imagine que c'est ce qui provoque l'erreur... et je pense que FF generera egalement un message d'erreur (souvent plus explicite d'ailleurs ).
Commenter la réponse de darb66
pagextchab2 10 Messages postés mardi 26 septembre 2006Date d'inscription 18 octobre 2006 Dernière intervention - 18 oct. 2006 à 19:07
0
Utile
Le probleme que je dois accéder à une fenêtre enfant : voici le code de ma fonction pour mieux t eclairer :

//Initialisation
    w = window.opener.document;
    d = document.frm;
    
 //Sélection de la liste des options de combo
 ary_List=w.forms["frm"].elements["hid_List"].value.split(";");
 
 //Parcours du tableau de la liste des combo
 for(int_I=0; int_I<ary_List.length; int_I++){

     //Sélection de la liste des options de combo
     ary_Detail=ary_List[int_I].split("¤");  
    
     //Définition du combo à remettre à jour
     strElement="cbo_List"+ary_Detail[0];
    
     //Réinitialisation du combo
     w.forms["frm"].elements[strElement].length=0;
    
     w.forms["frm"].elements[strElement].options[0] = new Option("AUCUNE LISTE","0");

CELUI-CI MARCHE EN FIRFOX MAIS PAS EN IE
  
Commenter la réponse de pagextchab2
darb66 36 Messages postés lundi 28 juillet 2003Date d'inscription 23 juin 2008 Dernière intervention - 18 oct. 2006 à 22:21
0
Utile
Dans ton 2eme exemple, pourrais-tu signaler a quel moment l'erreur est produite? Es-tu certain que w n'est pas "undefine"? Essaies de deboguer ton code en verifiant si toutes tes declarations sont valides:
alert(w);
alert(ary_List);
alert(ary_Detail);
alert(strElement);

Peut-etre as-tu une valeur corrompue mais a premiere vue je dirais sinon que le code est correct. Que se passe-t-il si tu enleves la ligne: w.forms["frm"].elements[strElement].length=0; ?
Commenter la réponse de darb66
pagextchab2 10 Messages postés mardi 26 septembre 2006Date d'inscription 18 octobre 2006 Dernière intervention - 23 oct. 2006 à 14:17
0
Utile
Non, de ce côté, tout est ok. C'est vraiment le code (add) en internet explorer qui pose problème.
Commenter la réponse de pagextchab2
darb66 36 Messages postés lundi 28 juillet 2003Date d'inscription 23 juin 2008 Dernière intervention - 23 oct. 2006 à 15:20
0
Utile
As-tu essaye d'enlever la ligne w.forms["frm"].elements[strElement].length= 0; ? Est-ce qu'au moins tu arrives a changer le texte et la valeur d'une option?

J'essaierais de changer comme ca:

w.forms["frm"].elements[strElement].length = 1
;
et ensuite
w.forms["frm"].elements[strElement].options[0] = new Option("AUCUNE LISTE","0");
ou
w.forms["frm"].elements[strElement].options[0].text = "AUCUNE LISTE";
w.forms["frm"].elements[strElement].options[0].value = 0;
Commenter la réponse de darb66

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.