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 :

rajout ligne en tête d'un tableau html


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut rajout ligne en tête d'un tableau html
    bonjour, je voudrais utiliser javascript pour rajouter des lignes en tête d'un tableau, mais je ne sais pas comment faire?
    Merci pour votre aide.
    Alpha

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Salut,
    il faut tout d’abord que tu aies une référence sur ton tableau, c’est-à-dire une variable qui te permet d’y accéder avec JavaScript. Le mieux c’est d’utiliser un id.
    De plus, si tu construis bien tes tableaux, tu mets des balises <tbody>, donc je te conseille de mettre l’id sur le tbody.
    Dans le code HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <table>
    <tbody id="monTableau">
    	...
    </tbody>
    </table>
    Dans le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var tableau = document.getElementById('monTableau');
    Ensuite, si tu n’as pas de framework, utilise les méthodes du DOM pour créer puis insérer des éléments HTML.

    Création :
    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
    // création du contenu des td
    var text1 = document.createTextNode('riri'),
    	text2 = document.createTextNode('fifi'),
    	text3 = document.createTextNode('loulou');
     
    // création des td
    var td1 = document.createElement('td'),
    	td2 = document.createElement('td'),
    	td3 = document.createElement('td');
     
    // remplissage des td
    td1.appendChild(text1);
    td2.appendChild(text2);
    td3.appendChild(text3);
     
    // création du tr
    var tr = document.createElement('tr');
     
    // assemblage du fragment
    tr.appendChild(td1);
    tr.appendChild(td2);
    tr.appendChild(td3);
    Insertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // on commence par récupérer l’ancienne première ligne
    // attention aux nœuds text correspondant aux sauts de ligne
    var noeud = tableau.firstChild;
    while (noeud.nodeType != 1) {
    	// tant que le nœud n’est pas un élément
    	noeud = noeud.nextSibling;
    }
     
    // on insère le fragment
    tableau.insertBefore(tr, noeud);
    Je reste dispo pour les questions
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    même que watilin code à un petit détail près
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <table>
    <tbody id="monTableau">
    	...
    </tbody>
    </table>
    attention si tu mets pas le thbody le navigateur lui le mettre pour toi
    dans le script
    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
    // création du contenu des td
    var text1 = document.createTextNode('riri'),
        text2 = document.createTextNode('fifi'),
        text3 = document.createTextNode('loulou');
     
    // création des td
    var th1 = document.createElement('th'),
        th2 = document.createElement('th'),
        th3 = document.createElement('th');
     
    // remplissage des td
    th1.appendChild(text1);
    th2.appendChild(text2);
    th3.appendChild(text3);
     
    // création du tr
    var tr = document.createElement('tr');
     
    // création du thead
    var thead = document.createElement('thead');
     
    // assemblage du fragment
    tr.appendChild(th1);
    tr.appendChild(th2);
    tr.appendChild(th3);
    thead.appendChild(tr);
     
     
    // on insère le fragment dans le noeud parent avant le body
    tableau.parentNode.insertBefore(thead, tableau);
    A+JYT

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut
    Un grand merci à vous deux, cela fonctionne à merveille, j'ai su me placer sur le 2è élément (après le titre) pour créer les nouvelles lignes.
    Par contre j'ai encore une question, en fait cela va servir dans un formulaire, à partir duquel on fait une insertion dans la base de données (en utilisant ajax), et si l'insertion s'est bien passée, le but c'est d'afficher la ligne qui a été insérée en 1ère position sur le tableau.Dès lors , comment insérer les éléments générés par la page appelée par ajax, dans le tableau (j'avais pensé à innerhtml mais sur quel élément?)

    Merci.
    Alpha

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Non, non, pas de innerHTML, utilisez le DOM comme vous venez de faire:

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    document.createElement(), appendChild(), ...

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    quoique insertBefore() est mieux adaptée si tu veux à chaque fois insérer en première position;

  7. #7
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    perso j'utilise ExtJS pour gérer mes datagrid

    ceux-ci sont très paramétrables et dispose de nombreuses fonctionnalités
    tri sur les colonnes (alpha numérique date ...) show/.hide de colonne par le client
    barre de bouton barre de statut
    scroll vertical et horizontal
    redimensionnement des colonnes
    databinding
    et pour l'édition le rowEditor est celui que je préfère.
    http://www.sencha.com/deploy/dev/exa...ow-editor.html

    j'utilise JSON mais il y a aussi XML comme solution
    on associe un objet js datasource qui décrit la structure des données (liste des champs et leur type, et la clef primaire) on y associe une url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        site: new Ext.data.JsonStore({
            // store configs
            autoDestroy: true,
            autoLoad: true,
            url: Ext.app.baseUrl + 'flow/get-site-list/',
            // reader configs
            root: 'rows',
            idProperty: 'value',
            fields: ['value', 'label']
        }),
    on donne la datasource au grid
    lorsque le grid s'affiche l'URL est invoqué en GET pour obtenir les données
    losque l'utilisateur mets à jour une ligne ou en insère une ou en supprime une la datasource est mise automatiquement à jour
    il est possible de mettre ajour via ajac automatiquement les données côté serveur
    http://www.sencha.com/deploy/dev/exa...l/restful.html

    c'est assez rapide de faire quelque chose de très complet

    les première fois j'ai bêtement pompé les exemples
    si la lib te parait trop volumineuse tu peux dans la section download faire ta propre lib en embarquant que les éléments que tu utilise

    A+JYT

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut
    Bonjour à tous,
    j'ai réussi à réaliser ce que je voulais, à savoir, faire un ajout ds la db via ajax, et ajout de la ligne correspondante dans le tableau, mais j'ai du le faire avec un innerhtml, car avec dom, je sais mettre un element dans une cellule, mais si j'ai plusieurs champs hidden par ex dans le même champs, cela ne marche pas ...?
    Ou peut on trouver la reference complète de dom ?

    Merci.
    Alpha.

  9. #9
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    http://www.w3.org/TR/DOM-Level-2-Core/core.html

    Pour les manips style insertion/recherche, en général c'est l'interface Node.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut
    Un grand merci pour les infos
    J'ai été voir aussi extjs, c'est impressionnant au niveau des possibilités...

    Alpha.

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

Discussions similaires

  1. Alterner la couleur des ligne dans un tableau html
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/01/2008, 14h57
  2. Réponses: 3
    Dernier message: 30/08/2007, 08h56
  3. Ajouter dynamiquement des lignes à un tableau HTML
    Par jeannot1974 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/11/2006, 15h39
  4. [XSLT] Créer un tableau HTML en fixant le nombre de cases par ligne
    Par kingmandrax dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 03/07/2006, 16h07
  5. [XSLT] aide pour faire un tableau HTML avec fusion de lignes
    Par utwor dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 02/01/2006, 21h41

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