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 :

[liste elements]


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut [liste elements]
    Bonjour, voila j'ai une liste et je veu verifier si l'option qui est dedans n'est pas deja rentré.... voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function ajouterTerme(chaine,id) {
    	new_option = new Option(chaine,id);
    	for (i = 0; i < document.getElementById('liste').options.length; i++)
        {
        	if(document.getElementById('liste').options[i] == new_option){
        	alert('Terme déjà selectionné!');
        	}else{
            document.getElementById('liste').options[document.getElementById('liste').options.length]=new_option;
            }
        }
    }
    Malheureusement ce code ne marche pas..... :'(
    Merci

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Qu'est ce qui te fais dire qu'il ne marche pas ?

  3. #3
    En attente de confirmation mail Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Points : 292
    Points
    292
    Par défaut
    C'est assez normal, tu teste si ton objet option est deja dans la liste des options de ton select (tu l'as cree avec un new, la reponse est donc forcement non de toute evidence) au lieu de tester si les caracteristiques de ce dernier (code//libelle) sont deja presentes dans ta liste.
    ++
    Fred.

    PS : plutot que 'le code ne marche pas', il est mieux de dire 'l'option est quand meme ajoutee' (par ex) c'est beaucoup plus simple de comprendre. Et plus tu pose ta question de facon simple est claire, plus il y aura de gens pour te repondre. Quand on a l'impression (je ne parle pas forcement pour toi) que les gens postent un code en attendant qu'on le debugge, on peut avoir tendance a ne pas s'y arreter

  4. #4
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    oui merci tu as raison... je dois donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function ajouterTerme(chaine,id) {
    	new_option = new Option(chaine,id);
    	for (i = 0; i < document.getElementById('liste').options.length; i++)
        {
        	if(document.getElementById('liste').options[i].value == new_option.value){
        	alert('Terme déjà selectionné!');
        	}else{
            document.getElementById('liste').options[document.getElementById('liste').options.length]=new_option;
            }
        }
    }

    ok, merci je test...

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    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
    function ajouterTerme(chaine,id) {
      trouve=false;
      i=0;
       while( i < document.getElementById('liste').options.length && !trouve)
        {
           if(document.getElementById('liste').options[i].value ==chaine ){
              trouve=true;
              alert('Terme déjà selectionné!');
           }     
           i++;           
        }
        if (trouve){
           new_option = new   Option(chaine,id);
    document.getElementById('liste').options[document.getElementById('liste').options.length]=new_option;
        }
    }

  6. #6
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    merci je test...

  7. #7
    En attente de confirmation mail Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Points : 292
    Points
    292
    Par défaut
    Hummm, pas tout a fait, tu dois creer ton option ssi elle n'est pas presente dans ta liste, pas a chaque tour de boucle. Je n'ai pas teste, mais je verrai plutot qq chose comme
    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
     
    function ajouterTerme(chaine,id) { 
       trouve = false;
       for (i = 0; i < document.getElementById('liste').options.length; i++) 
        { 
           if(document.getElementById('liste').options[i].value == new_option.value){ 
           trouve=true;
           break;
           }
        } 
       if ( !trouve ) {
            new_option = new Option(chaine,id); 
            document.getElementById('liste').options[document.getElementById('liste').options.length]=new_option; 
       }
       else {
           alert('Terme déjà selectionné!'); 
       }
    }
    a debugger bien sur et a adapter, mais l'idee est la
    ++
    Fred.

    PS grille

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Effectivement c'est un !trouve
    J'ai pas l'habitude d'utiliser les break dans les for
    je trouve cela un peu brutal

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    C'est vrai que c'est brutal !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i = 0; i < document.getElementById('liste').options.length && !trouve ; i++)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [List] element distinct
    Par ZaaN dans le forum C#
    Réponses: 2
    Dernier message: 08/01/2008, 14h37
  2. liste element possible de creer avec createElement
    Par calitom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/10/2007, 09h13
  3. LIST (element), innerHTML et Internet Explorer
    Par Hibou57 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 18/06/2007, 16h01
  4. [Forms]Liste Elements Forms/Base
    Par kikouu dans le forum Forms
    Réponses: 20
    Dernier message: 16/04/2007, 18h52
  5. [XML]Liste élément XML
    Par SteelBox dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 15/06/2006, 00h11

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