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 :

table n'accèpte pas de innerHTML ?


Sujet :

JavaScript

  1. #1
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut table n'accèpte pas de innerHTML ?
    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
    <script type='text/javascript'>
    var innerTRUC="<tr>";
    for(i=0;i<10;i++){
    innerTRUC+= "<td>coucou " + i +"</td>"
    ;}
    innerTRUC+="</tr>";
     
    var InnerMachin=""
    for (j=0;j<10;j++){InnerMachin+=innerTRUC;}
     
     
    </script>
    </head>
     
    <body onload="document.getElementById('one').innerHTML='<tbody>'+InnerMachin+'</tbody>'">
    <table id="one">
    </table>
    </body>
     
    </html>
    ce code me retourne une erreur innatendue ... comm esi on attendait des erreurs
    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
     
     
    <script type='text/javascript'>
    var innerTRUC="<tr>";
    for(i=0;i<10;i++){
    innerTRUC+= "<td>coucou " + i +"</td>"
    ;}
    innerTRUC+="</tr>";
     
    var InnerMachin=""
    for (j=0;j<10;j++){InnerMachin+=innerTRUC;}
     
     
    </script>
    </head>
     
    <body onload="document.getElementById('one').innerHTML='<table><tbody>'+InnerMachin+'</tbody></table>'">
    <div id="one">
    </div>
    </body>
     
    </html>
    celui ci ne pose pas de souci ???
    Il y a une restriction à attribuer un innerHTML sur les balsies tables ?

    Precision il semblerait que cela focntionne sous FFX mais pas IE
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre éprouvé Avatar de DavidDeTroyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 305
    Par défaut
    As tu essayé de faire plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <SCRIPT>
    var innerTRUC="<table><tr>";
    blabla
    innerTRUC+="</tr></TABLE>";
     
    </SCRIPT>
     
    <TABLE>
    <TR>
    <TD ID="one">
    </TD>
    </TR>
    </TABLE>
    Des fois que...

  3. #3
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    le but n'est pas d'ajouter du contenu à une cellule ...
    mais de remplir un tableau
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre éprouvé Avatar de DavidDeTroyes
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 305
    Par défaut
    Je ne comprend pas la différence. Si tu veut remplir un tableau en HTML, il faut bien que tu l'efface et l'affiche rempli, non ?

  5. #5
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    la quetion fondamentale est pourquoi si je renseigne le innerHTML d'un div avec le code complet d'un tableau ça passe, alors que si je renseigne le innerHTML d'une balise table avec des tr et des divs ça ne passe pas ...

    je n'ai besoin de rien effacer vu que les conteneurs sont vides au depart, je ne fait que venir leur mettre du code avec innerHTML
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Pour ma part cela ne plante que sur IE7 ( je n'ai pas ie6 )

    par contre en déboguant j'ai pus constater qu'avant l'affectation du innerhtml celui ci est a "undefined" ...

  7. #7
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    j'ai mis un contenu structuré à mon table avant insertion ...
    il sait faire un alert du innerHTML, mais pas l'affecter ...

    le innerHTML serait en lecture seule sur un table ou un select ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <body onload="alert(document.getElementById('one').innerHTML);document.getElementById('one').innerHTML='<tbody>'+InnerMachin+'</tbody>'">
    <table id="one">
    <tr><td></td></tr>
    </table>
    </body>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Seulement sous ie alors, j'ai essayé avec un try/catch mais je me retrouve avec une erreur de type : "object error" qui n'est pas listé ici :
    http://developer.mozilla.org/fr/docs..._globaux:Error

    La , il se pourrait bien que l'innerHTML ne soit pas accessible en écriture sous ie

  9. #9
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    un petit test :
    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
     
    <html>
    <head>
    <title></title>
     
    <script type='text/javascript'>
    function contenuDiv()
    {
    alert(document.getElementById('leDiv').innerHTML);
    }
     
     
    function contenuTable()
    {
    alert(document.getElementById('one').innerHTML);
    }
    </script>
    </head>
     
    <body onload="">
     
    <div id="leDiv">
    </div>
     
    <table id="one">
    </table>
     
    <input type="button" value="innerHTML sur DIV" onclick="contenuDiv()" />
    <input type="button" value="innerHTML sur TABLE" onclick="contenuTable()" />
     
    </body>
     
    </html>

    Il y a un div vide et un table vide dans la page...

    Sous FF les alert retournent un contenu vide (la fenêtre n'affiche rien).

    Sous IE :
    innerHTML sur le div ne retourne rien ok
    innerHTML sur le table retourne :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <tbody></tbody>

    or a priori cette balise n'existe pas dans la page donc ça plante (car visiblement tu cherches à faire un innerHTML sur une balise non définie).

    J'ai poussé le test un peu plus loin en ajoutant les balises tbdoy (car visiblement il manque ça). Donc en reprenant le code de SF :
    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
     
    <html>
    <head>
    <title></title>
     
    <script type='text/javascript'>
    var innerTRUC="<tr>";
    for(i=0;i<10;i++){
    innerTRUC+= "<td>coucou " + i +"</td>"
    ;}
    innerTRUC+="</tr>";
     
    var InnerMachin=""
    for (j=0;j<10;j++){InnerMachin+=innerTRUC;}
     
     
    </script>
    </head>
     
    <body onload="document.getElementById('one').innerHTML=InnerMachin">
     
     
    <table>
    <tbody  id="one">
    </tbody>
    </table>
     
     
    </body>
     
    </html>
    ben, euh, ça plante aussi

    J'ai trouvé cette documentation qui dit que innerHTML est en lecture seule pour les balises :
    COL, COLGROUP, FRAMESET, HEAD, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR.

  10. #10
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Haaaaaaaaaaaaaaa
    Merci Auteur, je n'avais rien trouvé sur le sujet...
    Cela confirme donc les soupçons de mon ignorance

    Parcontre ils ne parlent pas de la balise select, j'ai souvenirs d'avoir eu des deboires avec un responseText attribuer en innerHTML d'un select ??
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Parcontre ils ne parlent pas de la balise select, j'ai souvenirs d'avoir eu des deboires avec un responseText attribuer en innerHTML d'un select ??
    euh, là je ne sais pas, dans le document ils ne parlent pas de select et de ses options. Il est vrai que les options sont indissociables du select comme les tr et td sont indissociables du table, donc peut-être que innerHTML ne fonctionne pas non plus pour select.

    Pourquoi tu n'utilises pas createElement(), appendchild() pour divers éléments ou insertCell(), insertRow() pour les tables, ou select.options.add() pour le select ?


    responseText ce n'est pas de l'ajax ?

  12. #12
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    +1 avec toi auteur, mais je pense que c'était plus pour ses connaissances personnelles sur le coup
    Mais intéressant a traiter spafy , merci des infos...

  13. #13
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Oui Auteur c'est bien pour un responseText Ajax ...
    Je regardasi juste le tuto de siddh sur les listes liées avec ajax.

    le code des options est construit en php et versé dasn la page par un innerHTML, plutot que de construire coté javascript avec le DOM ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    le code des options est construit en php et versé dasn la page par un innerHTML, plutot que de construire coté javascript avec le DOM ...
    Je fais pareil (par flemme ) et sous IE6, jamais eu de problème ... hors <form>, bien sûr ...

    A+

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

Discussions similaires

  1. create table ne passe pas
    Par artotal dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/06/2006, 16h54
  2. [CR XI] Les nouveaux champs d'une table n'apparaissent pas
    Par david_chardonnet dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 03/04/2006, 11h20
  3. comment associer 3 tables n'ayant pas de champs communs ?
    Par bertrand_declerck dans le forum Langage SQL
    Réponses: 10
    Dernier message: 07/09/2005, 12h48
  4. erreur : la table n'existe pas !!!
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/06/2005, 14h17
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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