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

HTML Discussion :

Ajout de ligne dynamique dans un tableau (Incompatible IE)


Sujet :

HTML

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Ajout de ligne dynamique dans un tableau (Incompatible IE)
    Bonjour,

    Je cherche à rajouter de manière dynamique des lignes à mon tableau mais je n'y parviens pas sous IE. (Ce code fonctionne parfaitement sous Opéra et Firefox)

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <TABLE id="ma_table" BORDER="0" CELLSPACING="0" CELLPADDING="0"  bgcolor="white">
         <TR height="2px" bgcolor="white"><TD><a href="#">Ligne 1</a></TD></TR>
    </TABLE>
    <SCRIPT language="JavaScript">
    <!--
         ligne               = document.createElement('tr');
         cell                = document.createElement('td');
         cell.innerHTML = '<a href="#">Ligne 2</a>';
         ligne.appendChild(cell);
         document.getElementById('ma_table').appendChild(ligne);
    -->
    </SCRIPT>
    Si quelqu'un a une idée...

    D'avance Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Tu t'es planté de forum là je crois.

  3. #3
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    et si tu essayais un code tout simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <Script langage="JavaScript">
    Mot = "<tr>";
    Mot = Mot & "<td>";
    Mot = Mot & "<a href='#'> Ligne 1 </a>";
    Mot = Mot & "</td>";
    Mot = Mot & "</tr>";
     
    document.write(mot);
    </script>
    je croit que ceci devrais aller.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Malheureusement, je ne peux pas utiliser ce bout de code car je désire rajouter un élément à mon tableau une fois que la page HTML est déja chargée.
    C'est pour cela que j'utilise la création dynamique d'objet selon l'architecture DOM pour arriver à mes fins... mais mon problème c'est que je pense qu'IE ne répond pas au standard de programation dans ce domaine. Ou peut être tout simplement que c'est moi qui n'utilise pas la bonne méthode.

  5. #5
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Encore une fois, ton post aurait été plus à sa place sur le forum javascript...

    Pour ce qui est de la "solution", c'est que IE est apparement strict sur la prise en compte des éléments optionnels.

    Il faut donc que dans ta table tu tiennes compte du tbody même si tu n'en utilise pas.

    voilà un code qui fonctionne (chez moi...) :
    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
     
    <script type="text/javascript">
            // Recuperation des elements :
            var ligne       = document.createElement("tr");
            var colonne     = document.createElement("td");
            var a           = document.createElement("a");
            var href        = document.createAttribute("href");
            var texte       = document.createTextNode("Ligne 2");
     
            // Affectation des valeurs
            href.nodeValue = "#";
            a.setAttributeNode(href);
            a.appendChild(texte);
            colonne.appendChild(a);
            ligne.appendChild(colonne);
     
            // Ajout dans le tableau APRES le <tbody> (d'ou le firstChild)
            document.getElementById("ma_table").firstChild.appendChild(ligne);
    </script>

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Désolé de ne pas être dans le bon forum.

    Pour ce qui est de ta solution, elle fonctionne parfaitement sous IE mais au premier abord je dirais qu'elle n'est pas compatible avec Firefox.
    Si je ne trouve pas autre chose je peux rajouter un test pour connaître le type de navigateur utilisé mais bon... je préfèrerais éviter.

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    La solution est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById ('ma_table').getElementsByTagName('tbody')[0].appendChild (ligne);
    à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('ma_table').appendChild(ligne);

  8. #8
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Autant pour moi, je n'avais testé qu'avec Opera et IE...

    Ben sinon, la solution est simple, il suffit de créer ta table avec de thead, tfoot et tbody (ou juste tbody en fait, mais je ne sais pas si c'est conforme aux normes, si ça l'est tant mieux).

    A partir de là, tu appliques ton javascript de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Si ta page ne possède qu'une seule page :
    document.getElementsByTagName('TBODY')[0].appendChild(ligne);
    // sinon :
    document.getElementById("mon_tbody").appendChild(ligne);
    Ca, ça marche avec les 3 !

    PS :
    Ce serait pas mal qu'ils fassent des efforts de normalisation dans l'interpretation des javascripts et CSS quand même...

    D'ailleurs, malgré ce qu'on entend beaucoup, je trouve que IE n'a rien à envier à FireFox, qui lui non plus ne respecte pas tellement les normes ! Surtout en ce qui concerne les CSS...

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    OK merci pour ton aide précieuse.

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

Discussions similaires

  1. ajouter des lignes dynamiquement dans un JTable
    Par Jolt0x dans le forum Composants
    Réponses: 6
    Dernier message: 15/05/2014, 16h32
  2. [Débutant] [MVC 2]Ajouter une ligne dynamiquement dans un tablean
    Par John.BE dans le forum ASP.NET MVC
    Réponses: 9
    Dernier message: 23/10/2013, 11h28
  3. Réponses: 3
    Dernier message: 21/06/2009, 15h16
  4. [DOM] ajouter un element dynamiquement dans un tableau (<table>)
    Par Skanking dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 24/01/2009, 11h40
  5. Réponses: 5
    Dernier message: 25/06/2007, 09h51

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