IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment fonctionnent les index des options d'un select ?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut Comment fonctionnent les index des options d'un select ?
    Bonjour,

    En gros ma question se résume au titre du post.

    J'ai un select avec beaucoup d'options. La liste déroulante a un ascenseur très petit ce qui ne facilite pas du tout la sélection d'un élément.
    J'ai donc pensé à filtrer un peu ce select en choisissant à l'aide d'un autre select la première lettre.
    En choisissant par exemple B sur ce nouveau select je veux que le premier select s'actualise en laissant seulement les options commençant par un B. Ce serait l'idéal pour réduire le nombre d'éléments dans le select.

    Bref pour cela j'ai fait une petite fonction javascript (je maitrise pas trop cet outil encore) mais je m'emmêle avec les index du select !!

    Bon je vous montre le code!
    Je vous rappelle que j'ai deux select :
    - un avec bcp bcp d'options et meme un peu trop (form : noms, select : nom)
    - un avec les lettres de l'alphabet pour justement reduire le nombre d'options de l'autres select (form : tri, select : alphab)
    voilà la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
      <script language="javascript">
      function maj() 
      {
      var i;
      var j=0;
      var nb = document.forms.noms.nom.options.length;
        for(i=0;26>i;i++)
        {
          if (document.forms.tri.alphab.options[i].selected)
          {
            var lettre1 = document.forms.tri.alphab.options[i].text;
    	for(j=0;nb>j;j++)
    	{
     
    	    var nom = document.forms.noms.nom.options[j].text;
    	    var lettre2 = nom.slice(0,1);
     
    	    if (lettre2 != lettre1)
    	    {
    	      document.forms.noms.nom.options[j]=null; 
    	    }
    	}
          }
        }
      }
     
      </script>
    En fait le pb c'est qu'il ne parcourt pas tous les éléments du tableau.
    S'il y a 14 éléments l'index ne va pas de 0 à 13... il va jusqu'à 7 et après il y a des valeurs indéfinies apparemment... bref je comprends pas trop ce qu'il se passe!

    Sinon autre question : une fois que j'aurai fait cela mon option sera bien épurgé en choisissant une lettre mais si je veux choisir une nouvelle lettre comment récupérer toutes les anciennes valeurs. Apparemment c'est pas possible parce que je les aurais supprimées..

    Voilà!

    Merci pour votre aide !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 247
    Points : 99
    Points
    99
    Par défaut
    je crois avoir trouvé !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
      <script language="javascript">
      function maj() 
      {
      var i;
      var j=0;
      var nb = document.forms.noms.nom.options.length;
        for(i=0;26>i;i++)
        {
          if (document.forms.tri.alphab.options[i].selected)
          {
            var lettre1 = document.forms.tri.alphab.options[i].text;
    	for(j=0;nb>j;j++)
    	{
    	  if (document.forms.noms.nom.options[j] != undefined)
    	  {
    	    var nom = document.forms.noms.nom.options[j].text;
    	    var lettre2 = nom.slice(0,1);
     
    	    if (lettre2 != lettre1)
    	    {
    	      document.forms.noms.nom.options[j]=null;
    	      j--;
    	    }
    	  }
    	}
          }
        }
      }
     
     
     
      </script>
    Effectievement c'est logique, quand j'enlève une option, l'index des options suivantes est décrémenté ! Donc il suffit juste de décrementer l'indice de boucle (index) si une option est supprimée!

    Par contre une fois les options supprimées je ne sais pas comment les retrouver .. Qqun peut il m'aider ??

    Merci bcp !!

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/03/2015, 13h30
  2. [FAQ] Les formulaires (partie 1) Comment modifier l'état d'une des options d'un select ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 4
    Dernier message: 18/11/2013, 21h32
  3. Comment fonctionne l'enregistrement des mots de passe dans les navigateurs ?
    Par monstroplante dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/08/2011, 15h28
  4. comment fonctionne les index ?
    Par Shivan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/09/2009, 21h50
  5. Réponses: 2
    Dernier message: 28/09/2007, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo