Problème insertion dans une table via appenchild

Résolu
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010 - 23 août 2007 à 15:05
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010 - 23 août 2007 à 18:22
Salut à tous,

j'ai un gros problème, car je voudrais remplir un tableau à l'aide des composants appenchild, etc.... et apparament ca me remplit mon tableau comme il faut, mais pourtant à l'affichage il n'y a rien quand je fait par exemple alert(document.getElementById("content_table_liste").innerHTML); je vois que mon tableau s'est remplit correctement par contre il est toujours vide...

je vous montre mon code:

et dans mon fichier js:
function add_table_liste(array_table){
        for(i=0;i
Merci d'avance

10 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
23 août 2007 à 16:32
dans IE, ça baigne aussi... si on met ça dans TBody
       pas dans table ( on oublie toujours ce satané tbody ! )
    mais, avec FF, ça ne lui plait pas ! (il me reste peut-être des erreurs )
    pas regardé avec safari.

    perso j'utilise plutôt insertRow et insertCell
       ( parce que ça me semble plus simple,
          et que ça baigne partout  de la même manière
          ch'tit exemple ici )         

   
   
   

<script type="text/javascript">
    var liste=new Array(
        new Array("a1","a2","a3","a4"),
        new Array("b1","b2","b3","b4","b5","b6"),
        new Array("c1","c2")
        );
    var t0=document.getElementById("tableau");
    var t1,t2,t3,t4;
    for ( var l=0;l<liste.length;l++ )
    {    t1=document.createElement("tr");
        t2=t0.appendChild(t1);
        for ( var c=0;c<liste[l].length;c++ )
        {    t3=document.createElement("td");
            t4=t2.appendChild(t3);
            t4.innerText=liste[l][c];
        }
    }
</script>

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
3
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
23 août 2007 à 17:08
Et en faisant comme ça ?
    function clearTable(){
        var _table = document.getElementById("content_table_liste");
        while ( _table.rows.length >0)
                _table.deleteRow(0);
       
    }
...

[o-_-o]
3
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
23 août 2007 à 16:42
Bien le bonjour ,
Trop rapide Bultez, trop rapide

voilà la méthode avec les insertRow, insertCell

            function add_table_liste(array_table){
                // récupère la table
                var _table = document.getElementById("content_table_liste");
        for(i=0;i<array_table.length;i++){
                // création d'une ligne
            var row = _table.insertRow(i);
            //création d'une colonne.
            var new_control_td_marque=row.insertCell(0);          
            new_control_td_marque.id=array_table[i][12];
            new_control_td_marque.onclick=function(){read_array(this.id)};
            new_control_td_marque.appendChild ( document.createTextNode(array_table[i][1]));
           //création d'une colonne.
            var new_control_td_modele=row.insertCell(1);
            new_control_td_modele.id=array_table[i][12];
            new_control_td_modele.onclick=function(){read_array(this.id)};
               new_control_td_modele.appendChild (document.createTextNode(array_table[i][2]) );
           //création d'une colonne.
            var new_control_td_millesime=row.insertCell(2);
            new_control_td_millesime.id=array_table[i][12];
            new_control_td_millesime.onclick=function(){read_array(this.id)};
               new_control_td_millesime.appendChild ( document.createTextNode(array_table[i][0]) );
        }
    }

....



[o-_-o]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
23 août 2007 à 16:48
salut zobibol

>>Trop rapide Bultez, trop rapide
    parce que tu as lu la question plus tard que moi !     ;-)

>>voilà la méthode avec les insertRow, insertCell
    ben moi aussi je préfère cette méthode, comme je disais :

   

me semble plus simple ( mais chacun ses goûts ! )
       et surtout : ça baigne partout (?) de la même manière





<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />

En général, c'est absurde de généraliser.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
23 août 2007 à 16:50
ah ouhai c cool, c bidon en fait d'inserer un tr à un tbody et non à la table, à propos c'est quoi cette balise???
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
23 août 2007 à 16:55
Le problème des insertRow, insertCell est tout de même la gestion de la table :
    doit-on vider la table avant ?
    inserer à la suite des lignes éxistantes ?
Mais sans informations, pas de solutions !

[o-_-o]
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
23 août 2007 à 16:55
je suis en train de faire une fonction pour effacer toutes les lignes du tableau, et ce que vous pouvez me dire si c'est une solution qui convient?

var tags=['tr'];
  var count_var=0;
  for(tagCounter=0;tagCounter<tags.length;tagCounter++){
   var inputs=document.getElementsByTagName(tags[tagCounter]);
   for(var no=0;no<inputs.length;no++){
    var mytable=inputs[no].id;
    if(mytable.substring(0,12)=='table_liste_'){
     document.getElementById('content_table_liste').removeChild(document.getElementById('content_table_liste').lastChild);
    }    
   }
  }  }
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
23 août 2007 à 17:00
bah on a ecrit en même temps, bah j'y vien là, en fait il faut que j'efface le tableau avant d'insérer c'est pour ca, que j'ai créer la fonction ci dessus, mais je suis pas sur qu'elle convienne
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
23 août 2007 à 17:14
c'est si simple que ca??? et moi qui à crée un truc de 20 lignes.......... mdr

je vais testé ca!!!
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
23 août 2007 à 18:22
bah ca marche impec, merci bcp les gars!!!
0
Rejoignez-nous