Bonjour,
Je cherchai désespérément à pouvoir classer un tableau HTML grâce à du JavaScript sans créer le tableau en JavaScript. En effet, le tableau comporte des checkbox (input) qui ne peuvent pas être inséré dans des tableaux HTML.
J'ai alors trouvé le script de QuentinC ici :
JavaScript
qui permet de trier par colonne, mais j'aimerai que lorsqu'on clique une seconde fois sur l'entête de colonne, celle-ci soit classée dans l'ordre inverse. Etant débutant en JavaScript j'espère que vous pourrez m'aider sur ce problème.
Voici le code JavaScript :
Les infos pour classer le tableau sont transmises sous cette forme :
Je pense qu'il faudrait rajouter une troisième variable, mais je ne sait pas comment faire en sorte que cela classe le tableau dans l'autre sens.
Merci d'avance.
Modifié par Zetura (04 Jul 2008 - 11:00)
Je cherchai désespérément à pouvoir classer un tableau HTML grâce à du JavaScript sans créer le tableau en JavaScript. En effet, le tableau comporte des checkbox (input) qui ne peuvent pas être inséré dans des tableaux HTML.
J'ai alors trouvé le script de QuentinC ici :
JavaScript
qui permet de trier par colonne, mais j'aimerai que lorsqu'on clique une seconde fois sur l'entête de colonne, celle-ci soit classée dans l'ordre inverse. Etant débutant en JavaScript j'espère que vous pourrez m'aider sur ce problème.
Voici le code JavaScript :
function sortTable (tb, n) {
var iter = 0;
while (!tb.tagName || tb.tagName.toLowerCase() != "table")
{
if (!tb.parentNode) return;
tb = tb.parentNode;
}
if (tb.tBodies && tb.tBodies[0]) tb = tb.tBodies[0];
var reg = /^\d+(\.\d+)?$/g;
var index = 0, value = null, minvalue = null;
for (var i= tb.rows.length -1; i >= 0; i -= 1) {
minvalue = value = null;
index = -1;
for (var j=i; j >= 0; j -= 1) {
value = tb.rows[j].cells[n].firstChild.nodeValue;
if (!isNaN(value)) value = parseFloat(value);
if (minvalue == null || value < minvalue) { index = j; minvalue = value; }
}
if (index != -1) {
var row = tb.rows[index];
if (row) {
tb.removeChild(row);
tb.appendChild(row);
}
}
}
}
Les infos pour classer le tableau sont transmises sous cette forme :
<thead>
<tr><th><a href="#" onclick="sortTable(this,0); return
false;">Colonne 1</a></th>
<th><a href="#" onclick="sortTable(this,1); return false;">Colonne 2</a></th>
</tr>
</thead>
Je pense qu'il faudrait rajouter une troisième variable, mais je ne sait pas comment faire en sorte que cela classe le tableau dans l'autre sens.
Merci d'avance.
Modifié par Zetura (04 Jul 2008 - 11:00)