darb66
Messages postés36Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention23 juin 2008
-
13 avril 2006 à 22:44
darb66
Messages postés36Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention23 juin 2008
-
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?
darb66
Messages postés36Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention23 juin 2008 14 avril 2006 à 16:07
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...
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 14 avril 2006 à 07:31
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. ~
Phil_Free
Messages postés275Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention28 avril 200611 14 avril 2006 à 09:47
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');
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:
darb66
Messages postés36Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention23 juin 2008 18 oct. 2006 à 19:01
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 ).
darb66
Messages postés36Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention23 juin 2008 18 oct. 2006 à 22:21
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; ?
darb66
Messages postés36Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention23 juin 2008 23 oct. 2006 à 15:20
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;