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 :

Tableau et données html


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 402
    Points : 153
    Points
    153
    Par défaut Tableau et données html
    Bonjour,

    Je cherche à récupérer dans un tableau JS des valeurs d'une page xhtml.
    Mais lors de l'affichage de la 1ère valeur du tableau, celui-ci semble vide ; j'ai le message : 'null'.
    Merci pour votre aide.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                    <h:outputText id="t1" value="a"/>
                    <h:outputText id="t2" value="b"/>
                    <h:outputText id="t3" value="c"/>
     
                    <script>
                        var t = [document.getElementById("t1"), document.getElementById("t2"), document.getElementById("t3")];
                        alert(t[0]);
                    </script>

  2. #2
    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


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText id="t1" value="a"/>
    C'est une langue étrangère, pas du HTML.

    Cela me fait penser à l'élément HTML <output id="t1"></output>.

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    C'est du jsf t'es pas au bon endroit
    https://www.tutorialspoint.com/jsf/j...uttext_tag.htm

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 091
    Points : 16 643
    Points
    16 643
    Par défaut
    Salut

    En français sur DVP
    Forum Frameworks Web JSF
    FAQ JSF

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 402
    Points : 153
    Points
    153
    Par défaut
    Bonjour,
    Mon problème ne concerne pas JSF mais bien JS.
    Merci

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Bonjour,

    Tu postes dans la section html , un code mélangeant de tout sauf du html

    html
    output
    js

    Quelque soit le projet, l'ensemble du code ne va pas ensemble

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 402
    Points : 153
    Points
    153
    Par défaut
    J'avais posté dans la section JS mais il a été déplacé malgré moi!

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 058
    Points : 44 588
    Points
    44 588
    Par défaut
    Bonjour,
    comme il me semble te l'avoir déjà signifier il faut mettre le code HTML généré (*)et non le code serveur, javascript travaillant, dans ce cas coté client ,il ne « verra » que du HTML.

    Prend l'habitude de regarder le code généré il est souvent révélateur des soucis rencontrés.

    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var t = [document.getElementById("t1"), document.getElementById("t2"), document.getElementById("t3")];
    j'aimerais savoir se que tu comptes obtenir, dans la mesure où le script est au bon endroit ?

    (*) accessoirement tes sujets ne seront plus déplacés

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Si il s'agit uniquement de javascript alors tu as tous les liens pour mener à bien ton projet

  10. #10
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 402
    Points : 153
    Points
    153
    Par défaut
    Je souhaite utiliser l'API Google Chart pour réaliser des graphiques.
    Pour cela j'ai besoin de récupérer en JS les 18 champs années et 18 champs montants qui se trouvent tous sur une page XHTML.

    Je pourrais faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var data = [document.getElementById('annee01').innerHTML, parseFloat(document.getElementById('valeur01').innerHTML)......................]
    Sauf que je préfèrerais une solution du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = document.getElementById('idDeMaTableHTMLDansLaquelleJaiPlaceMes36Valeurs').innerHTML;
    pour enfin pouvoir utiliser son contenu avec (c'est pas moi qui le dit mais les tutos!) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var annee01 = data[0] ... qui correspond à la 1ère occurence du tableau
     
    var montant01 = parseFloat(data[1]) ... pour l'occurence suivante etc ...

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Bonjour,
    c'est faisable mais quel est le code de ta page xhtml

  12. #12
    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
    On n'avait vraiment aucune chance de comprendre la question posée dans le message n° 1 !

    Sans un extrait de 'MaTableHTMLDansLaquelleJaiPlaceMes36Valeurs' (code HTML généré) il faut toujours une boule de cristal !

    On ne peut pas deviner la structure de vos TD, ni savoir si votre table est bien formée.

    Essayer toujours .textContent au lieu de .innerHTML

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    C'est déja une belle avancée, on est passé du

    au c'est une page xhtml

  14. #14
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2015
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 402
    Points : 153
    Points
    153
    Par défaut
    Mon code modifié (mais pas mieux avec textContent) :

    JS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = [document.getElementById('tbl').textContent]; alert(data[0]);
    HTML

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <table id="tbl" style="display: none">
                                <td id="annee01">#{contributeurManagerBean.listeColonneAnnee.get(0)}</td>
                                <td id="valeur01">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(0))}</td>
                                <td id="annee02">#{contributeurManagerBean.listeColonneAnnee.get(1)}</td>
                                <td id="valeur02">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(1))}</td>
                                <td id="annee03">#{contributeurManagerBean.listeColonneAnnee.get(2)}</td>
                                <td id="valeur03">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(2))}</td>
                                <td id="annee04">#{contributeurManagerBean.listeColonneAnnee.get(3)}</td>
                                <td id="valeur04">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(3))}</td>
                                <td id="annee05">#{contributeurManagerBean.listeColonneAnnee.get(4)}</td>
                                <td id="valeur05">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(4))}</td>
                                <td id="annee06">#{contributeurManagerBean.listeColonneAnnee.get(5)}</td>
                                <td id="valeur06">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(5))}</td>
                                <td id="annee07">#{contributeurManagerBean.listeColonneAnnee.get(6)}</td>
                                <td id="valeur07">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(6))}</td>
                                <td id="annee08">#{contributeurManagerBean.listeColonneAnnee.get(7)}</td>
                                <td id="valeur08">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(7))}</td>
                                <td id="annee09">#{contributeurManagerBean.listeColonneAnnee.get(8)}</td>
                                <td id="valeur09">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(8))}</td>
                                <td id="annee10">#{contributeurManagerBean.listeColonneAnnee.get(9)}</td>
                                <td id="valeur10">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(9))}</td>
                                <td id="annee11">#{contributeurManagerBean.listeColonneAnnee.get(10)}</td>
                                <td id="valeur11">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(10))}</td>
                                <td id="annee12">#{contributeurManagerBean.listeColonneAnnee.get(11)}</td>
                                <td id="valeur12">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(11))}</td>
                                <td id="annee13">#{contributeurManagerBean.listeColonneAnnee.get(12)}</td>
                                <td id="valeur13">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(12))}</td>
                                <td id="annee14">#{contributeurManagerBean.listeColonneAnnee.get(13)}</td>
                                <td id="valeur14">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(13))}</td>
                                <td id="annee15">#{contributeurManagerBean.listeColonneAnnee.get(14)}</td>
                                <td id="valeur15">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(14))}</td>
                                <td id="annee16">#{contributeurManagerBean.listeColonneAnnee.get(15)}</td>
                                <td id="valeur16">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(15))}</td>
                                <td id="annee17">#{contributeurManagerBean.listeColonneAnnee.get(16)}</td>
                                <td id="valeur17">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(16))}</td>
                                <td id="annee18">#{contributeurManagerBean.listeColonneAnnee.get(17)}</td>
                                <td id="valeur18">#{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(17))}</td>
                            </table>

  15. #15
    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


    On n'est toujours pas rendu au code HTML généré !

    #{contributeurManagerBean.calculerMontantTotalGeneral(contributeurManagerBean.listeColonneAnnee.get(0))} c'est du code serveur !

    Ce n'est pourtant pas difficile : vous affichez la page web, un clic droit sur la page et choisir "Afficher le code source de la page. Dans la page qui s'ouvre, copier-coller la partie du code qui représente la table.

  16. #16
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 058
    Points : 44 588
    Points
    44 588
    Par défaut
    Citation Envoyé par danielhagnoul
    On n'est toujours pas rendu au code HTML généré !
    certes mais on y est presque

    Essayons de faire avancer le Schmilblic.

    Tu peux parcourir toutes les cellules de ta <table> pour en récupérer les valeurs, donc pas besoin de mettre une ID à chaque cellules.

    Une façon de procéder en utilisant les collection rows et cells
    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
    // récupération de l'élément
    var oTable = document.querySelector("#tbl");
    var lig;
    var col;
    var oRow;
    var nbCells;
    var nbRows = oTable.rows.length;
    // parcours des lignes de la table
    for (lig = 0; lig < nbRows; lig += 1) {
      oRow = oTable.rows[lig];
      nbCells = oRow.cells.length;
      // parcours des cellules d'une ligne
      for (col = 0; col < nbCells; col += 1) {
        // récupération des données
        console.log(oRow.cells[col].textContent);
      }
    }
    il te reste à mettre les données dans tes tableaux pour exploitation.

    Nota : il doit bien être possible côté serveur de générer ces tableaux directement dans une balise <script> pour obtenir quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var dates = ["2018-01-01", "2018-01-02", "2018-01-03", ...];
    var valeurs = [151, 147, 25, 45, ...];
    il me semble que cela serait quand même le mieux !


    PS : ton autre question récente semble concerner en fait le même problème merci de ne pas dupliquer tes questions mais de prendre soins de bien répondre aux questions/remarques qui te sont posées/faites !
    Citation Envoyé par denisduval75
    var data = [document.getElementById('tbl').textContent]; alert(data[0]);
    As tu pris le temps de regarder la réponse faite dans ton autre discussion, j'en doute !

Discussions similaires

  1. remplir un tableau des données en html
    Par ifdo7a dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 12/04/2013, 18h43
  2. Réponses: 7
    Dernier message: 15/12/2005, 14h24
  3. exporter un tableau de donnée vers un document word
    Par demerzel0 dans le forum Access
    Réponses: 2
    Dernier message: 04/11/2005, 11h57
  4. Filtrer un tableau de données
    Par Yux dans le forum Langage
    Réponses: 12
    Dernier message: 13/10/2005, 22h21
  5. [Collections] Transformer un tableau de données en une chaîne
    Par NATHW dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/06/2004, 16h44

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