cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010
-
29 nov. 2007 à 20:49
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
1 déc. 2007 à 09:07
bonjour j'ai probleme avec une fonction JS. voila elle etait censé boucler pour supprimer tout les valeurs mais voila ca ne marche pas
par contre si je boucle pour selectionner toutes les valeur ca marche tres bien .. je ne comprends pas pourquoi
si j'ai ...
les boites d'alerte vont me donner si je mets simplement l1.options[i].selected="selected";
alert > 01
alert > 01 non
alert > 02
alert > 02 non
alert > 03
alert > 03 non
alert > 04
alert > 04 non
... ca marche tres bien !!!
par contre si j'ajoute la lign suivante l1.options[i] =null; ca me donne ...
alert > 01
alert > 02 non
alert > 03
alert > 04 non
et la moitié des valeurs n'a pas été supprimer
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 29 nov. 2007 à 21:52
Bonjour,
l'affectation de nul à l'option ne la supprime pas
...
Pour supprimer physiquement l'option il te faut utiliser la méthode removeChild exemple :
//----------------
function Destroy(){
var Obj = document.getElementById('liste2');
for (var i=0; i < Obj.options.length-1; i++){
Obj.removeChild( Obj.options[i]);
i--; // OBLIGATOIRE de decrementer i l'option n'existant plus, il faut revenir en arrière sinon on n'en detruit qu'un sur deux
}
}
cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010 30 nov. 2007 à 13:48
J'ai essayé, ca ne marche pas ! le script fait planter ma page
petite precision ma fonction doit vider ce select mais injecter les valeurs suprimés
dans un autre select "liste1".
C pour ça que j'avais pensé a ceci :
il selectionne la premiere valeur, il l'injecte dans la liste1 (l2) puis efface la valeur selectionné puis selectionne la deuxieme valeur etc etc ...
var l1 = document.getElementById('liste2');
var l2 = document.getElementById('liste1');
for (var i=0; i < l1.options.length; i++){
alert(l1.options[i].value );
l1.options[i].selected="selected";
o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
l2.options[l2.options.length]=o;
l1.options[l1.options.length].selected.length=0;
alert(l1.options[i].value + ' non');
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 30 nov. 2007 à 13:55
>>j'ai essayé, ca ne marche pas ! le script fait planter ma page
tu causes à qui ?
si c'est 0 moi, si, si, mon exemple fonctionne et sans planter
et je parierais bien la même chose pour ce que propose PetoelTeam !
à priori, tu n'appliques pas comme il faut
>>petite precision ma fonction doit vider ce select mais injecter les valeurs
>>suprimées dans un autre select "liste1".
ah... la question est différente !
cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010 30 nov. 2007 à 14:22
désolé bultez ... vraiament toutes les excuses j'avais oublié de renommer ma variable
j'ai fait ceci ...
for (var i=0; i < l1.options.length; i++){
l1.options[i].selected="selected";
o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
l2.options[l2.options.length]=o;
l1.removeChild( l1.options[i]);
i--; }
et ca marche tres bien !
et document.getElementById("liste2").length=0; marche très bien aussi
par contre j'ai un autre petit soucis lorsque je réinjecte les valurs dans la "liste 1"(l2) il me les places bien entendu a la fin du select hors je souhaiterais que mes option s'organise en fonction de leur valeurs
et que je veux envoyer la valuer 02 dans la liste 1, il va se placer à la fin hors je voudrais qu'il se place entre 01 et 03.
Comment pourrais-je m'y prendre
</li>
</ol>
merci encore infiniment
cs_attentio
Messages postés167Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention24 mai 2010 30 nov. 2007 à 17:55
aie ... aie ... aie !!!
je m'en sort pas ! je n'arrive pas a ordonner les elements de liste 1 tel qu'ils le sont pas defaut ...
je ne sais pas trop comment m'y prendre
voici mon code si vous arrivez à vous y retrouver :
====================================
var l1 = document.getElementById('liste2');
var l2 = document.getElementById('liste1');
for (var i=0; i < l1.options.length; i++){
// on selectionne les un apres les autres les elements de la liste2
l1.options[i].selected="selected";
// on bascule l'element de la liste 2 vers la liste1
o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
/////////////////////////////////////////////// A REVOIR//////////////////////////////////
//on place l'element dans la liste1 par ordre numerique
var tmp=l1.options[i].value.toLowerCase();
var pos;
// on boucle
for (var n=0;n<l2.length;n++)
{
pos=l2.options[n].value;
if ( pos >= tmp )
{
l2.options[l2.options.length]=o;
// on deselectionne l'element ajouté dans la liste1
o.selected="selected";
//l2.selectedIndex=n;
//n=l2.length;
} }