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 :

Récupérer la hauteur des "tr" d'un "tbody"


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Récupérer la hauteur des "tr" d'un "tbody"
    Bonjour,

    Je souhaite récupérer la hauteur des lignes de ma table (uniquement les lignes qui sont dans un 'tbody').
    Le 'tbody' a un identifiant et les 'tr' n'ont pas d'identifiants.
    Je voulais savoir s'il est possible de récupérer tous les enfants de type 'tr' du 'tbody'


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var tableauEnfantsBody = document.getElementById("body").getElementsByTagName("tr");
    for (var i = 0; i < tableauEnfantsBody.length; i++) {
       var hauteur = tableauEnfantsBody[i].height;
       alert("hauteur : "+ hauteur);
     }
    Dans la hauteur, j'obtiens : undefined.

    Comment ça se fait ?

    Merci d'avance

  2. #2
    Expert éminent
    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 : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Il n'y a pas d'attribut height sur un <tr>. Ce que tu cherches c'est la valeur CSS height.

    Mieux encore, JavaScript te permet d'avoir la valeur en temps réel et exprimée en pixels grâce à la méthode globale getComputedStyle.

    En reprenant ton code ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var tableauEnfantsBody = document.getElementById("body").getElementsByTagName("tr");
    for (var i = 0; i < tableauEnfantsBody.length; i++) {
       var hauteur = window.getComputedStyle(tableauEnfantsBody[i]).height;
       alert("hauteur : "+ hauteur);
     }
    Ça c'est ma propre façon de faire. Charge la page avec ta console ouverte (F12) pour voir le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array.forEach(
      document.querySelectorAll("#body tr"),
      function($tr) {
        console.log(window.getComputedStyle($tr).height);
      }
    );

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci, ça marche!
    J'ai même l'impression qu'il prend en compte la bordure dans la hauteur.

  4. #4
    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,
    pourquoi ne pas utiliser la collection rows de l'objet tbody?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var lstTR = document.getElementById("body").rows;
    et il est peut être plus intéréssant de récupérer le offsetHeight de ces éléments plutôt que le height (CSS) qui peut être décimal.

    Pour avoir plus de détail (MDN mais il en existe d'autres)

  5. #5
    Expert éminent
    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 : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    J'aurais mis +2 si j'avais pu. rows et offsetHeight sont à la fois plus efficaces et plus pratiques que ma solution

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

Discussions similaires

  1. récupérer la liste des noms des champs d'une table
    Par la_didise dans le forum Access
    Réponses: 2
    Dernier message: 29/05/2006, 16h55
  2. Comment récupérer la liste des contacts de outlook express?
    Par arnaud_verlaine dans le forum Outlook Express / Windows Mail
    Réponses: 6
    Dernier message: 12/10/2004, 15h53
  3. [MAP] comment récupérer la liste des clé ordonnées
    Par Alec6 dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 21/07/2004, 16h37
  4. Comment récupérer la liste des logiciels installés sur une machine ?
    Par david_chardonnet dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 19/09/2003, 17h41
  5. Récupèrer la liste des disques durs
    Par Tililian dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/06/2003, 12h42

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