Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2085 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Manière la plus efficace d'effacer une liste d'options d'un select

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Manière la plus efficace d'effacer une liste d'options d'un select

n°1413077
Hermes le ​Messager
Breton Quiétiste
Posté le 25-07-2006 à 14:35:31  profilanswer
 

Voilà, tout est dans le titre :
 
soit un :
 

Code :
  1. <select id="id-select-test">
  2. <option value="zobi zobi !">kikou !</option>
  3. <option value="1">10</option>
  4. <option value="2">20</option>
  5. <option value="3">30</option>
  6. </select>


 
Les options peuvent sans problèmes être créées de la manière suivante :
 

Code :
  1. var option_supplementaires = document.createElement("option" );
  2. option_supplementaires.appendChild(document.createTextNode('kikou !'));
  3. option_supplementaires.value = 'zobi zobi !';
  4. document.getElementById('id-select-test').appendChild(option_supplementaires);


 
Ma question :
 
Comment supprimer toutes les options de 'id-select-test' ? Solution DOM uniquement.  
 
Merci

mood
Publicité
Posté le 25-07-2006 à 14:35:31  profilanswer
 

n°1413092
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-07-2006 à 14:48:42  profilanswer
 

Allez deux solutions pour le coup ;)
Avec removeChild ( pas ma préféré, vu que t'es obligé de te coltiner un boucle):

Code :
  1. var opt = document.getElementById('a').getElementsByTagName('option');
  2.     for(var j=opt.length-1; j>=0; j--){
  3.       document.getElementById('a').removeChild(opt[j]);
  4.     }


Note: attention, tu es obligé de faire une boucle en --, car opt est une référence sur le getElementsByTagName, donc chaque fois que tu fais un removeChild sa length diminue.
 
Avec replaceNode et CloneNode ( beaucoup plus joli):

Code :
  1. var selNode = document.getElementById('a');
  2.     selNode.parentNode.replaceChild(selNode.cloneNode(false), selNode);


le false dans cloneNode précise qu'il ne faut pas copier ses enfants.

n°1413103
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2006 à 15:01:19  profilanswer
 

Je ne comprends pas très bien cette manie de vouloir tout faire en DOM.
 
Le (X)HTML se démarque du XML par la présence d'objets métiers. Je pense que ce n'est pas un luxe que de les utiliser, si ?
 
Ils sont là justement pour que :
1/ Le code soit plus lisible
2/ Qu'on ne puisse pas se retrouver avec des Options dans un checkbox
3/ Vérifier la cohérence des éléments modifiés par JS
 
Sans compter qu'ils sont censés être plus efficaces que la manipulation DOM en terme de performances...
Comprend pas.
 
http://www.w3schools.com/js/tryit. [...] ect_remove
 
Avec ce code :

Code :
  1. function removeOption()
  2. {
  3. var x=document.getElementById("mySelect" )
  4. while (x.length > 0)
  5. x.remove(0);
  6. }

Message cité 1 fois
Message édité par Arjuna le 25-07-2006 à 15:06:57
n°1413107
Hermes le ​Messager
Breton Quiétiste
Posté le 25-07-2006 à 15:03:26  profilanswer
 

Arjuna a écrit :

Je ne comprends pas très bien cette manie de vouloir tout faire en DOM.


 
On en reparlera dans quelques années. ;)

n°1413111
Hermes le ​Messager
Breton Quiétiste
Posté le 25-07-2006 à 15:06:49  profilanswer
 

anapajari a écrit :


Avec replaceNode et CloneNode ( beaucoup plus joli):

Code :
  1. var selNode = document.getElementById('a');
  2.     selNode.parentNode.replaceChild(selNode.cloneNode(false), selNode);


le false dans cloneNode précise qu'il ne faut pas copier ses enfants.


 
 :jap:  :jap:  Très bon et très pratique. Merci bcp.
 
Une surprise vous attend pour bientôt sur ce forum... (je n'en dit pas plus pour le moment).  :D  

n°1413115
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-07-2006 à 15:09:38  profilanswer
 

Hermes le Messager a écrit :

On en reparlera dans quelques années. ;)


C'est tout vu.
 
En C++ aussi on peut travailler uniquement avec des pointeurs nons typés, et lancer des méthodes en bidouillant à une adresse mémoire.
 
Pourtant, on a misen place des conceptes complexes comme l'héritage et la dérivation afin de justement, avoir des variables typées de façon la plus proche de leur contenu.
 
Là, on est en train de faire un retour en arrière. Tout est de type "xmlnode", on sait pas ce qu'on fait ni dans quoi, et au final, moi je préconise qu'on travaille ligne par ligne en mode texte, vous verrez c'est encore plus souple pour programmer.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Manière la plus efficace d'effacer une liste d'options d'un select

 

Sujets relatifs
[Access] Mettre à jour une zone de liste à partir d'un menu déroulantIf (SELECT) then UPDATE ELSE INSERT ...
liste deroulanteeffacer une valeur dans une collection de fichiers unix
Modifier en VBA les options d'habillage d'une image[Access] Recherche sur un champs à partir d'une liste
comment stocker le resultat d'un "select" dans une variable[Access] Zone de liste et doublons dans formulaire
liste déroulante dynamique[C# .net] Faire un simple "select" à SQL Server
Plus de sujets relatifs à : Manière la plus efficace d'effacer une liste d'options d'un select


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR