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 les rows d'un élément table (IE vs Firefox)


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut Récupérer les rows d'un élément table (IE vs Firefox)
    Bonjour,

    J'ai le problème suivant :

    J'ai un doc constitué à peu près comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table>
     <tbody>
      <form>
       <tr></tr>
      </form>
     </tbody>
     <tbody>
      <form>
       <tr></tr>
      </form>
     </tbody>
    </table>
    J'essaie de récupérer les "<tr>" à l'aide des collections .rows appliqué sur la table ou le tbody mais avec IE :
    - si je fais un table.rows il ne récupère que les tr du premier tbody
    - si je fais un tbody.rows il ne récupère que des tr qui ne sont pas entre des balises form

    Alors qu'avec Firefox ou Opera ça fonctionnne sans soucis

  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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form>
       <tr></tr>
      </form>
    C'est quoi ce form qui vient perturber la struture du tableau ?????

    on ne peut pas intercaler des balises comme ça !!!

  3. #3
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    Pas la peine de m'engueuler c'est pas mon code
    Je fais juste que le débugger. :o

  4. #4
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Je ne t'engueule pas ...
    C'est juste que du code comme ça, ça pique les noeils !

    Bon ben commence par debuguer le html en respectant la structure d'une balise table.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,
    Un table ne doit avoir qu'une seule balise tbody. Sinon, tu peux récupérer les éléments tr avec getElementsByTagName("tr").

    A+.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonsoir,
    Un table ne doit avoir qu'une seule balise tbody.
    plusieurs TBODY sont autorisés http://www.w3.org/TR/html4/struct/tables.html#h-11.2.3
    Sinon, tu peux récupérer les éléments tr avec getElementsByTagName("tr").
    pour les constructions un peu... cela reste la meilleur solution

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il existe aussi la collection rows liée aux balises <body>, <thead>, <tfoot> ou <tbody>

  8. #8
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    Merci pour vos réponses.

    J'avais tenté le .rows sur le Tbody mais le souci reste le même.
    En fait le corps de ma page est généré par du java c'est pour ça que je voulais pas trop y toucher (ie : pour pas revoir tout le mode de génération de la page).

    J'ai creuser un peu et apparement en changer le doctype de strict à transitional et en enlevant un balise <meta http-equiv="X-UA-Compatible" content="IE=8" />
    la fonction javascript marche mieux, est ce qu'a votre avis il y a moyen de finter juste la fonction "js" ?

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    pour pas revoir tout le mode de génération de la page
    C'est pourtant le plus important à faire !
    Tant que la structure de ta table sera incorrecte (notamment les balises <form> mal positionnées), tu ne pourras pas appliquer de rustine efficace !
    est ce qu'a votre avis il y a moyen de finter juste la fonction "js" ?
    Non, tu ne peux pas faire croire à JavaScript que ta structure HTML est correcte si elle ne l'est pas...

  10. #10
    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
    À la limite, tu pourrais recréer en JS un parseur HTML qui accepterait ce genre de structure scabreuse… Mais ça risque de demander pas mal de boulot

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Watilin
    À la limite, tu pourrais recréer en JS un parseur HTML qui accepterait ce genre de structure scabreuse… Mais ça risque de demander pas mal de boulot
    Pas sûr... le comportement des navigateurs devant une structure HTML erronée ne peut être garantit. Et à priori, la plupart tentent de "remanier" le HTML pour le rendre le plus conforme possible.

  12. #12
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Beef je pense que Watoo imaginait comme moi la recuperation d'un innerHTML
    => parsage de texte

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Mouais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8" />
    	<title>Malformed HTML</title>
    </head>
    <body>
    	<div id="mauvais"><span>HTML non <strong>valide</span></div>
    <script>alert(document.getElementById('mauvais').innerHTML);</script>
    </body>
    </html>
    affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span>HTML non <strong>valide</strong></span>


    EDIT :
    et
    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
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8" />
    	<title>Malformed HTML</title>
    </head>
    <body>
    	<table>
    		<tbody id="mauvais">
    			<form>
    				<tr></tr>
    			</form>
    		</tbody>
    		<tbody>
    			<form>
    				<tr></tr>
    			</form>
    		</tbody>
    	</table>
    	<script>alert(document.getElementById('mauvais').innerHTML);</script>
    </body>
    </html>
    affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form></form>
    	<tr></tr>

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Je ne vois pas trop l'intérêt.
    masturbation intellectuelle ?

  15. #15
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Trouver une excuse pour pondre du code pourri

  16. #16
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    Alors j'ai résolu mon problème en gettant les éléments par le tag TR.
    J'espère qu'il aura pas de régression

    Merci pour vos avis

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

Discussions similaires

  1. Récupérer les mails Outlook dans une table Access
    Par zerrokooll dans le forum VBA Access
    Réponses: 79
    Dernier message: 07/07/2009, 14h22
  2. récupérer les données d'un texte -> table
    Par bizu31 dans le forum Oracle
    Réponses: 3
    Dernier message: 29/03/2007, 09h59
  3. Récupérer les dimensions de l'élément parent ?
    Par ghohm dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 02/09/2006, 10h22
  4. Réponses: 1
    Dernier message: 07/06/2006, 18h56
  5. Requete select pour récupérer les no match entre 2 tables
    Par Celina dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/12/2003, 11h59

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