11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour

En javascript, j'ajoute des lignes à une table déclarée en Html

Cette table a 2 colonnes avec du texte (X et Y) et une checked box (Enabled)

Voici la table


<table name="coor" id="coor" class="configTable">
 <caption>Coordonnées</caption>
 <tr>
 <th>X</th>
 <th>Y</th>
 <th>Enabled</th>
 </tr>
 </table>

Voici le code pour faire l'ajout d'une ligne


{
currentRow = addRow();
currentRow.cells["X"].lastChild.value = "xxxx";
currentRow.cells["Y"].lastChild.value = "yyyy";
if (condition == true)
{
   	currentRow.cells["Enabled"].lastChild.checked = true;
}
else
{
  	currentRow.cells["Enabled"].lastChild.checked = false;
}
}
function addRow() 
{
var currentControl, currentCell, currentRow;
var cellIndex = -1;

currentRow = coor.insertRow(coor.rows.length);
  
// X
currentCell = currentRow.insertCell(++cellIndex);
currentCell.id = "X";

// Y
currentCell = currentRow.insertCell(++cellIndex);
currentCell.id = "Y";

// enabled
currentCell = currentRow.insertCell(++cellIndex);
currentCell.id = "Enabled";
currentControl = document.createElement("input");
currentControl.type = "checkbox";
currentCell.appendChild(currentControl);

return currentRow;
}
Jusque la, ca va.

Maintenant je veux trier cette table en fonction de la valeur de "Enabled".
Le tri est un quicksort à base de insertBefore pour permuter les lignes.

coor.tBodies[0].insertBefore(trs, trs[j]);
avec
trs = coor.tBodies[0].getElementsByTagName("tr");

Avec FF3, pas de problème, le tri est fait, le tri inverse marche aussi très bien.

Avec IE6, petit problème, les valeurs des checked box, et seulement elles, disparaissent ET le tri est correct.

Un alert() avant et après montre que le problème semble venir de l'insertBefore.

Merci de me donner une idée.

Modifié par alain_m (22 Sep 2009 - 18:43)
Bonjour et bienvenue parmi nous Smiley smile

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

D'ailleurs, je rappelle que le lien qui apparaît en bandeau tout en haut du forum ("Nouveau sur le forum ?...") est important. Il contient des pistes de recherche, des indications sur les règles de vie de la communauté, etc.
Il serait courtois de ta part de bien vouloir en prendre connaissance.

Bonne continuation Smiley smile

upload/1-code.gif