Demande aide pour optimiser algo insertion cellule tableau [Résolu]

Signaler
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
-
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
-
Bonjour,

Je voudrais savoir si quelqu'un pourrait m'aider à optimiser mon algo d'ajout d'une ligne dans un tableau. Mon algo marche pour un tableau qui contient 2 colonnes. Le problème est que dès lors que je dépasse 2 colonnes dans mon tableau, alors dans la ligne ajoutée, la dernière cellule n'apparaît pas.

Dans ma fonction addRow(pos), je lui passe en paramètre la position à laquelle je veux insérer ma ligne dans le tableau sélectionné. Voici ma fonction, en espérant que quelqu'un pourra m'aider à régler ce problème.

function addRow(pos)
{
   if (document.selection.type == 'Control')
   {
     range=document.selection.createRange();     if (range.length 1 && (range(0).tagName 'TABLE' || range(0).tagName == 'table'))
     {
    var oldId=range(0).id;
    range(0).id="tableNow";
    var tbl = document.getElementById('tableNow');
     }
   }
 
 var row = tbl.insertRow(pos);


 var cellLeft = row.insertCell(0);
 
 range(0).id=oldId;
 //Ajout d'une cellule de droite
 var cellRight = row.insertCell();  
}

Jarod_Delaware

4 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
je ne vois nulle part que tu insères plusieurs colonnes.

ch'tit exemple ?

<script type="text/javascript">
    var lig,tb=document.getElementById("tb1");
    for ( var l=0;l<5;l++ )
    {   lig=tb.insertRow(l);
        for ( var c=0;c<5;c++ )
        { lig.insertCell(lig.cells.length).innerHTML="L"+l+"C"+c;    }
    }
</script>

<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
Bonjour,

    var lig=tableau.insertRow(adresse);      insère une ligne
    var col=lig.insertCell(lig.cells.length);      insère une colonne en fin

    quelques infos ici :
        http://www.javascriptfr.com/codes/TRAITEMENTS-SUR-TABLEAUX_26660.aspx

<hr />


Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Salut Bultez,

Merci pour ta réponse. J'ai essayé la ligne de code que tu m'as posté mais ça marche pas. Lorsque je veux insérer une ligne supplémentaire à mon tableau, il insére qu'une seule cellule sur la ligne entière. Est ce que tu pourrais m'aider, je vois pas mon erreur.

function addRow(pos)
{
   if (document.selection.type == 'Control')
   {
     range=document.selection.createRange();     if (range.length 1 && (range(0).tagName 'TABLE' || range(0).tagName == 'table'))
     {
    var oldId=range(0).id;
    range(0).id="tableNow";
    var tbl = document.getElementById('tableNow');
  }
   }
 
 var row = tbl.insertRow(pos);


 var cellLeft = row.insertCell(0);
 
 range(0).id=oldId;
 //Ajout d'une cellule de droite
 //var cellRight = row.insertCell();
 
 //row.insertCell(row.cells.length).innerHTML=(tbl.rows.length-1);
 var lig=tbl.insertRow(pos);     // insère une ligne
    var col=lig.insertCell(lig.cells.length);     // insère une colonne en fin  
}

Jarod_Delaware
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Merci beaucoup pour ton exemple et ton aide. Je me suis inspiré de ton tutorial sur la manipulation des tableaux et de ton petit exemple. Du coups ça marche maintenant, ça insère bien la ligne avec toutes les cellules à l'endroit voulu

var l = tbl.insertRow(pos);
  l.insertCell(l.cells.length).innerHTML=(tbl.rows.length-1);
 for (var c=1;c<tbl.rows[0].cells.length;c++) //.. ajouter les colonnes ..
 {
  l.insertCell(l.cells.length).innerHTML=(tbl.rows.length-1);
 } 

Merci énormément pour ton aide. Qu'est ce je ferais sans toi , lol.
 

Jarod_Delaware