Comparaison de Chaine de caractères, déplacement DOM

Comparaison de Chaine de caractères, déplacement DOM - HTML/CSS - Programmation

Marsh Posté le 20-04-2007 à 15:44:40    

Bonjour à tous.
J'ai deux petites questions. Tout d'abord, comment compare-t-on proprement 2 chaines de caractères en Javascript, afin de les classer par ordre alphabétique ? J'utilise l'opérateur ">", mais je doute que ce soit une bonne idée.
Ensuite, j'ai deux SELECT et j'aimerais faire passer des OPTION de l'un à l'autre. Pour cela, j'ai donc la fonction suivante  

Code :
  1. function switchSelect(from, to, sort) {
  2.   var el_from = gId(from);
  3.   var el_to = gId(to);
  4.   var is_moved = false;
  5.   if (el_from.selectedIndex !== -1){
  6.     // récupération du noeud à déplacer
  7.     var node = el_from[el_from.selectedIndex]
  8.     var rem_node = el_from.removeChild(node);
  9.     // ajout du noeud à destination
  10.     if (sort) { //on replace le noeud à sa place, alphabetiquement parlant
  11.       var children = el_to.getElementsByTagName('option');
  12.       if (children.length > 0) {
  13.         for (var i = 0, len = children.length; i < len; i++) {
  14.           if (children[i].innerHTML > rem_node.innerHTML) {
  15.             el_to.insertBefore(rem_node, children[i]);
  16.             is_moved = true;
  17.             break;
  18.           }
  19.         }
  20.       }
  21.     }
  22.     if (!is_moved) {
  23.       el_to.appendChild(rem_node);
  24.     }
  25.   }
  26.   return false;
  27. }


Je trouve mon traitement *un peu* lourd. Vous auriez des idées d'amélioration ?
 
Merci d'avance


Message édité par Pato el canardo le 20-04-2007 à 15:45:27
Reply

Marsh Posté le 20-04-2007 à 15:44:40   

Reply

Marsh Posté le 20-04-2007 à 20:11:26    

J'ai un truc comme ça qui traine dans le coin, je l'utilisais sur des champs select à choix multiples

Code :
  1. function Deplacer(a,b) {
  2. l1 = document.getElementById(a);
  3. l2 = document.getElementById(b);
  4. if (l1.options.selectedIndex>=0) {
  5.   o=new Option(l1.options[l1.options.selectedIndex].text,l1.options[l1.options.selectedIndex].value);
  6.   l2.options[l2.options.length]=o;
  7.   l1.options[l1.options.selectedIndex]=null;
  8.  }else{
  9.   alert("Aucun fichier selectionné" );
  10.  }
  11. }


Il fait passer les options selectionnées d'un select à l'autre dont l'id est passé en paramètre


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed