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 :

Ajout/Suppression dynamique d'éléments


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 116
    Par défaut Ajout/Suppression dynamique d'éléments
    Bonjour, j'essai de réaliser un code permettant à un utilisateur d'ajouter ou supprimer plusieurs éléments (Combobox ou Select). Pour ce faire, l'utilisateur cliquera sur le bouton "Ajouter" qui générera un combobox en-dessous des combobox déjà existant et cliquera sur le bouton "Retirer" pour retirer le combobox en question. (Les boutons ne sont visibles que sur la dernière ligne de combobox et donc ne permettent l'ajout ou la suppression du dernier combobox).

    La majorité de mon code semble fonctionner (Création de combobox généré dynamiquement, supression des boutons précédents pour les recrée à côté du nouveau combobox) cependant, mon bouton "Retirer" ne fonctionne pas comme il se doit. Il supprime la ligne désirée correctement mais affiche les boutons Ajouter et Retirer une ligne en dessous, il laisse donc une ligne vide entre le "nouveau" dernier combobox et les boutons. De plus, lorsque je clique sur mon bouton Ajouter après cette manipulation, il crée le combobox à sa gauche, si je reclique, tout redevient normal. J'aimerais que les boutons se positionnent correctement à la droite du dernier combobox et crée le nouveau combox en dessous comme il se doit.

    Voici mon code:

    Javascript
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <SCRIPT type="text/javascript">
    compteur = 0;
    function createCombo()
    {	
    	//Incrémentation du compteur
    	compteur++;
    	
    	//Vérification de la valeur du compteur
    	if(compteur>0)
    	{
    		//Affectation de valeurs aux variables
    		//Ligne précédente
    		oldAddID = "ajout" + (compteur-1);
    		oldRemID = "retire" + (compteur-1);
    		//Ligne courrante
    		addID = "ajout" + compteur;
    		remID = "retire" + compteur;
    		selID = "select" + compteur;
    	}
    	
    	//Le formulaire
    	var myForm = document.getElementById("formulaire");
    	
    	//Boutons précédents
    	var myOldAdd = document.getElementById(oldAddID);
    	var myOldRem = document.getElementById(oldRemID);
    	
    	//Combobox actuel
            var mySelect = document.createElement("select");
            var myOption = document.createElement("option");
            var myOptionText = document.createTextNode("Valeur 1");
        
            //Boutons
            var myAdd = document.createElement("button");
            var myRem = document.createElement("button");
        
            //Identification du combobox
            mySelect.id = selID;
        
            //Création d'une valeur dans le combobox
            myOption.appendChild(myOptionText);
            myOption.setAttribute("value","none");
        
            //Détails du bouton ajouter
    	myAdd.id = addID;
    	myAdd.appendChild(document.createTextNode('Ajouter')); 
    	myAdd.onclick = createCombo; 
    	
    	//Détails du bouton retirer
    	myRem.id = remID;
    	myRem.appendChild(document.createTextNode('Retirer')); 
    	myRem.onclick = retireCombo;
        
            //Ajout d'un retour de chariot
            var myBreak = document.createElement("br");  
    	
    	//Affectation des éléments à leurs conteneurs
    	mySelect.appendChild(myOption);
    	myForm.appendChild(mySelect);
    	myForm.appendChild(myAdd);
    	myForm.appendChild(myRem);
    	myForm.appendChild(myBreak);
    	myForm.removeChild(myOldAdd);
    	myForm.removeChild(myOldRem);
    }
    
    function retireCombo()
    {
    	//Le formulaire
    	var myparam = document.getElementById("formulaire");
    	
    	//Les éléments à supprimer
    	var oldAddRem = document.getElementById("ajout" + compteur);
    	var oldRemRem = document.getElementById("retire" + compteur);
            var oldSelectRem = document.getElementById("select" + compteur);
        
            //Les éléments à rajouter
            var newAddRem = document.createElement("button");
            var newRemRem = document.createElement("button");
    
    	//Détails du bouton ajouter
    	newAddRem.id = addID;
    	newAddRem.appendChild(document.createTextNode('Ajouter')); 
    	newAddRem.onclick = createCombo; 
    	
    	//Détails du bouton retirer
    	newRemRem.id = remID;
    	newRemRem.appendChild(document.createTextNode('Retirer')); 
    	newRemRem.onclick = retireCombo;
    
    	//La suppression
            myparam.removeChild(oldAddRem);
            myparam.removeChild(oldRemRem);
            myparam.removeChild(oldSelectRem);
        
            //L'ajout des éléments antérieurs
            myparam.appendChild(newAddRem);
            myparam.appendChild(newRemRem);
    }
    </SCRIPT>
    HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <div id="paraID">
    	<form id="formulaire">
    		<select name="etape">
    			<option value="none">Valeur 1</option>
    		</select>
    		<INPUT TYPE="BUTTON" ONCLICK="createCombo()" id="ajout0" VALUE="Ajouter"><BR>
    	</form>
    </div>
    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 199
    Par défaut
    Je pense que ce qui va pas c'est que par exemple ta variable addID dans ta fonction retireCOmbo est déclaré dans ta fonction createCombo est non dans la fonction retireCombo, c'est-à-dire que c'est une variable locale à ta fonction createCombo est non à ta fonction retireCombo.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 116
    Par défaut
    J'ai essayé de déclarer une copie dans mon retireCombo mais ça ne fonctionne toujours pas

Discussions similaires

  1. Ajout/Suppression dynamique de JPanel (dans un autre JPanel)
    Par Carvallegro dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 16/05/2012, 09h52
  2. Suppression d'un élément ajouté dynamiquement
    Par flapy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2011, 14h23
  3. Ajout/Suppression dynamique de champs
    Par hedgehog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/04/2008, 10h57
  4. Ajout/suppression "dynamique" d'un champ
    Par 6ix dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 19/04/2008, 11h11
  5. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50

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