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 :

Création de tableau en DOM2


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Création de tableau en DOM2
    Bonjour et meilleurs vœux à tous.

    Dans la fonction suivante, j'attends un tableau de lignes de même structure mais avec des données utilisateur différentes. Chaque ligne contient un champ de formulaire par cellule. Mon code place tous les champs de formulaire dans une seule cellule au lieu de les répartir dans quatre cellules.
    Les lignes 15 et 16 me renvoient apparemment les bons éléments (voir ci-dessous) mais la structure du DOM n'est pas bonne.
    Code javascript : 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
    newAction.addEventListener('click', function() {
    	var tr			= document.createElement('tr'),
    		td			= document.createElement('td'),
    		qui			= document.createElement('select'),
    		action		= document.createElement('input'),
    		commentaire	= document.createElement('textarea'),
    		fait		= document.createElement('input'),
    		tds			= [];
     
    	tbody.appendChild(tr);
    	for (let i=0; i<4; i++) {
    		tds.push(td);
    		tr.appendChild(tds[i]);
    	}
    	console.log('tr: '+tr);
    	console.log('tds: '+tds);
    	tds[0].appendChild(qui);
    	tds[1].appendChild(action);
    	tds[2].appendChild(commentaire);
    	tds[3].appendChild(fait);
    }, false );
    Fenêtre de débogage dans IE11:
    tr: [object HTMLTableRowElement]
    tds: [object HTMLTableDataCellElement],[object HTMLTableDataCellElement],[object HTMLTableDataCellElement],[object HTMLTableDataCellElement]

  2. #2
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 744
    Par défaut
    jour

    tu créé un seule td essai en deplacant
    td=document.createElement('td')
    , dans la boucle de cette facon

    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
     
    newAction.addEventListener('click', function() {
    	var tr			= document.createElement('tr'),
    		qui			= document.createElement('select'),
    		action		= document.createElement('input'),
    		commentaire	= document.createElement('textarea'),
    		fait		= document.createElement('input'),
    		tds			= [];
     
    	//lines.push(new line(lines.length + 1, qui, action, commentaire, fait));
    	tbody.appendChild(tr);
    	for (let i=0; i<4; i++) {
                    td= document.createElement('td'),
    		tds.push(td);
    		tr.appendChild(tds[i]);
    	}
    	console.log('tr: '+tr);
    	console.log('tds: '+tds);
    	tds[0].appendChild(qui);
    	tds[1].appendChild(action);
    	tds[2].appendChild(commentaire);
    	tds[3].appendChild(fait);
    }, false );

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Merci, c'est effectivement la bonne solution. Autrement si j'ai bien compris après avoir approfondi la question, la variable td étant définie, il faudrait la cloner et non pas la réutiliser (ligne 12 de mon code en #1). Est-ce bien exact?

  4. #4
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 744
    Par défaut
    la solution pourrait être de cloner la ligne entière avec cloneNode mais je pense pas que ce soit utile.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    OK merci

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

Discussions similaires

  1. création de tableau dans un autre tableau
    Par freestyler dans le forum Delphi
    Réponses: 2
    Dernier message: 02/11/2006, 08h54
  2. erreur création de tableau
    Par fabule dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 20/07/2006, 20h36
  3. Création de tableau
    Par rod59 dans le forum C
    Réponses: 10
    Dernier message: 12/11/2005, 16h40
  4. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 17h07

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