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 :

Modifier un tableau avec innerHTML sous IE


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 37
    Points
    37
    Par défaut Modifier un tableau avec innerHTML sous IE
    Bonjour,

    J'ai découvert Prototype ce weekend... j'essaye de modifier le contenu d'un tableau. J'écris ce qui suit. Ce code fonctionne très bien sur Firefox. Sous IE, malheureusement c'est une autre paire de manches ... ca veut pas ... ma ligne se supprime bien mais mon tableau ne se met pas a jour.
    Mon p'tit script cgi renvoie du text du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr><td>value1</td></tr>
    <tr><td>value2</td></tr>
    <tr><td>value3</td></tr>
    <tr><td>value4</td></tr>
    Le code qui ne fonctionne pas est la :

    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
    function insertTable()
    {
     var myAjax = new Ajax.Request('http://192.168.0.9/cgi-bin/get_sales.cgi', {method: 'get',parameters: '',onComplete: showContent} );
    }
     
    function showContent (requete)
    {
     var newContent = requete.responseText ;
     var cpt = $('patate').rows.length - 1 ;
     var tableau = $('patate') ;
     
     while (cpt >= 0)
       {
        $('patate').deleteRow (cpt) ;
        cpt -- ;
       }
     $('patate').innerHTML = newContent ;
    // new Insertion.Bottom ('mytable', newContent) ;
     
    }
    J'ai fouillé dans les forums mais j'ai pas trouvé de réelle réponse ...
    Suis je obligé de parser complétement le resultat et de faire de l'ajout tr par tr et td par td ... ou bien existe il une solution plus rapide ?

    D'avance merci,
    Gédéon

  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
    regarde plutot du coté du DOM avec createElement puis appendChild ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 37
    Points
    37
    Par défaut
    J'ai bien noté ta recommendation et effectivement j'arrive à ajouter/modifier/supprimer des tbody, tr et td avec Dom. Cependant ma contrainte est la suivante : j'ai une application tierce (le serveur via Ajax ...i) qui me renvoie un ensemble important de données sous la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <tr><td>value1</td><td>value5</td></tr>
    <tr><td>value2</td><td>value6</td></tr>
    <tr><td>value3</td><td>value7</td></tr>
    <tr><td>value4</td><td>value8</td></tr>
    Je voudrais ne pas être obligé de parser le résultat pour l'intégrer. Donc faire une intégration directement du resultat dans mon tbody.

    Ca n'est pas envisageable ?

    En tout cas, merci pour ta réponse

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 34
    Points : 37
    Points
    37
    Par défaut
    Donc j'ai adopté ta solution SpaceFrog. Encore merci

    Je copie le code pour ceux que ca peut intéresser ('patate' étant l'id de mon tbody) :

    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
    31
    32
    33
    34
    35
    36
     
    function showContent (requete)
    {
     var xmlContent = requete.responseXML;
     var cpt = $('patate').rows.length - 1 ;
     var tableau = $('mytable') ;
     var corps = $('patate') ;
     
     
     while (cpt >= 0)
       {
        corps.deleteRow (cpt) ;
        cpt -- ;
       }
     
     
     var xmlTr = xmlContent.getElementsByTagName ('tr') ;
     alert ("nb tr = "+xmlTr.length) ;
     var i = 0 ;
     var j = 0 ;
     for (i = 0 ; i < xmlTr.length ; i++)
       {
        var tr = document.createElement ('tr') ;
        var xmlTd = xmlTr[i].getElementsByTagName ('td') ;
        alert ("nb td = "+xmlTd.length);
        for (j = 0 ; j < xmlTd.length ; j++)
          {
           var td = document.createElement ('td') ;
           tdText = xmlTd[j].firstChild.nodeValue ;
           tdText = document.createTextNode (tdText) ;
           td.appendChild (tdText) ;
           tr.appendChild (td) ;
          }
        corps.appendChild (tr) ;
       }
    }

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

Discussions similaires

  1. Création d'un tableau avec VS sous Open Office
    Par klowner dans le forum Visual Studio
    Réponses: 0
    Dernier message: 06/01/2011, 11h32
  2. [PDO] Modifier un élément d'une table mis sous tableau avec fetchall
    Par lol88 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/12/2009, 00h31
  3. [DOM] Générer un tableau avec innerHTML
    Par Setsuna_00 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2009, 17h02
  4. [DOM] insertion de code HTML au sein d'un tableau avec innerHTML
    Par Tanebisse dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/11/2008, 14h52
  5. modifier un tableau avec javascript
    Par lemmings dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 15/11/2005, 10h10

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