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 :

Reset ligne d'un tableau


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Reset ligne d'un tableau
    Bonjour,

    J'essaie de créer un tableau plus ou moins dynamique grâce à des boutons qui me permettent d'ajouter des lignes avec des champs à remplir. Mon problème est que si je remplis un champ et que ensuite j'ajoute une nouvelle ligne à mon tableau, les données saisies dans les autres champs sont reset et je ne comprends pas pourquoi

    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
    <script charset="utf-8">
        function addComp()
        {
            document.getElementById('tableau').innerHTML += '<tr><td><input type="text" class="lesComp form-control"></td><td><select class="form-control">' +
                '<option value="1">1</option>' +
                '<option value="2">2</option>' +
                '<option value="3">3</option>' +
                '<option value="4">4</option>' +
     
                '</select></td></tr>'
        }
     
        function addAxe()
        {
            document.getElementById('tableau').innerHTML += '<tr><td class="lesAxes"><input class="form-control" type="text" ></td><td class="lesAxes">Note Attendu</td></tr>'
        }
    </script>
    Code html : 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
    <div class="group" style="margin-top: 50px;">
     
    </div>
    <div>
    <table class="table" id="tableau">
        <tr>
            <td class="lesAxes"><input name="axes[]" type="text" class="form-control" ></td>
            <td class="lesAxes">Note Attendu</td>
        </tr>
        <tr>
            <td><input name="competences[]" type="text" class="lesComp form-control"></td>
            <td>
                <select name="noteAttendu[]" class="form-control">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
     
                    </select></td>
        </tr>
    </table>
    </div>
    <div class="milieu">
    <input type="button" class="boutonCreerGrille" value="AjouterComp" onclick="addComp();" />
    <input type="button" class="boutonCreerGrille" value="AjouterAxe" onclick="addAxe();" />
    </div>

    J'espère que ma demande est assez clair sinon je serai ravi d'apporter plus d'explications ! Merci d'avance de votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Le innerHTML de ton élément est celui du chargement, le innerHTML n'est pas modifié par le fait que tu as modifié le value de ton input
    D'où le fait qu'il reparte avec le innerHTML de base sans les values pour y ajouter ta ligne et don il réinitialise les inputs

    Il vaudrait mieux passer par du cloneNode et appendChild...

    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
    var Compline=document.createElement("tr");
    Compline.innerHTML='<td><input type="text" class="lesComp form-control"></td><td><select class="form-control"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select></td></tr>';
    var Axeline=document.createElement("tr");
    Axeline.innerHTML='<td class="lesAxes"><input class="form-control" type="text" ></td><td class="lesAxes">Note Attendu</td>';
     
    function addComp()
        {
            newComp=Compline.cloneNode('true');
            document.getElementById('tableau').appendChild(newComp);
        }
     
        function addAxe()
        {
        	newAxe=Axeline.cloneNode('true');
            document.getElementById('tableau').appendChild(newAxe);
        }

    Accessoirement Note est féminin ... Note Attendue
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    En utilisant "innerHTML" vous obligez le DOM à se reconstruire à chaque ajout.

    Voir : https://developer.mozilla.org/fr/doc.../createElement

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    C'est parfait merci beaucoup, j'aurais du me douter qu'avec le inner ca se passerait comme ça !

    Bonne journée et merci encore !

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

Discussions similaires

  1. JSF/XHTML: Reset une seule ligne d'une tableau
    Par xeonDev dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 08/02/2012, 00h02
  2. probleme bizarre de hauteur auto d'une ligne dans un tableau
    Par zax-tfh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/01/2005, 23h34
  3. Incrémenter lignes d'un tableau
    Par skea dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/01/2005, 11h12
  4. Espacement entre les ligne d'un tableau
    Par Flobel dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 02/11/2004, 09h33
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

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