Accueil > > > TRI DE TABLEAU HTML
TRI DE TABLEAU HTML
Information sur la source
Description
Ce code permet de trier les tableaux HTML par colonne,
tres simple a mettre en place, les rangées doivent etre
identifiée pour faire partie des donées a trier.
Source
- <HTML>
- <HEAD>
- <SCRIPT>
- // Code créé par francktfr pour www.systeme-d.net
- function SortArray(aText,aHtml,Index,Order){
- var Test = Order > 0 ? "aText["+Index+"][b] > aText["+Index+"][a]" : "aText["+Index+"][b] < aText["+Index+"][a]" // Choix de la comparaison
- for (a = 0; a < aText[Index].length; a++) // Liste de tous les éléments du tableau
- {
- for (b = 0; b < aText[Index].length ;b++) // Re-liste tous les éléments pour les comparer à Numbers[a]
- {
- if (eval(Test)) {
- for (i=0; i<aText.length; i++){ // Mise a jour des tableaux
- Copy = aText[i][b]; aText[i][b] = aText[i][a]; aText[i][a] = Copy
- Copy = aHtml[i][b]; aHtml[i][b] = aHtml[i][a]; aHtml[i][a] = Copy
- }
- }
- }
- }
- }
- function IsDate(sDate){ // retourne true si c'est une date valide
- if (sDate.length < 8){return false}
- var iDay = sDate.substring(0,2)
- var iMonth = sDate.substring(3,5)
- var iYear = sDate.substring(6)
- iDay = iDay*1
- iMonth = (iMonth*1)-1
- iYear = iYear*1
- var rDate = new Date(iYear,iMonth,iDay,0,0)
- if(rDate.toString() == "NaN"){return false}
- return true
- }
- function cDate(sDate){ // Convertie une date du format JJ/MM/AAAA en date JavaScript
- var iDay = sDate.substring(0,2)
- var iMonth = sDate.substring(3,5)
- var iYear = sDate.substring(6)
- iDay = iDay*1
- iMonth = (iMonth*1)-1
- iYear = iYear*1
- var rDate = new Date(iYear,iMonth,iDay,0,0)
- return(rDate)
- }
- function TableOrder(Dir){ // 1: Croissant, -1: Décroissant
- var oCell = event.srcElement
- while (oCell.tagName != "TD"){oCell = oCell.parentElement} // determine la cellule sélectionnée
- var oTable = oCell.parentElement
- while (oTable.tagName != "TABLE"){oTable = oTable.parentElement} // determine l'objet table parent
- var index = -1
- for (c=0; c<oTable.rows[0].cells.length; c++){if (oTable.rows[0].cells[c]==oCell){index=c}} // determine l'index de la cellule
- var RowNb = 0
- var aHtmlTable = new Array() // Tableau de contenu HTML
- var aTextTable = new Array() // Tableau de valeur
- for (c=0; c<oTable.rows[0].cells.length; c++){ // sur toutes les cellules
- var ColonneHtml = new Array()
- var ColonneText = new Array()
- var RowNb = 0
- for (r=0; r<oTable.rows.length; r++){ // de toutes les rangées nommées "TableDatas"
- if (oTable.rows[r].id == "TableDatas"){
- ColonneHtml[RowNb] = oTable.rows[r].cells[c].innerHTML // met a jour le tableau de colonne correspondant
- ColonneText[RowNb] = IsDate(oTable.rows[r].cells[c].innerText) ? cDate(oTable.rows[r].cells[c].innerText) : oTable.rows[r].cells[c].innerText
- RowNb++
- }
- }
- aHtmlTable[c] = ColonneHtml
- aTextTable[c] = ColonneText
- for (a=0; a<ColonneHtml.length; a++){aHtmlTable[c][a]=ColonneHtml[a]}
- for (a=0; a<ColonneText.length; a++){aTextTable[c][a]=ColonneText[a]}
- }
- RowNb=0
- SortArray(aTextTable,aHtmlTable,index,Dir) // Tri des données
- for (x=0; x<oTable.rows[0].cells.length; x++){ // Remplacement des données dans le tableau HTML
- RowNb=0
- for (y=0; y<oTable.rows.length; y++){
- if (oTable.rows[y].id == "TableDatas"){
- oTable.rows[y].cells[x].innerHTML= aHtmlTable[x][RowNb]
- RowNb++
- }
- }
- }
- }
- </SCRIPT>
- <STYLE>
- .Table{font: 12 Arial; text-align: center; border: 1 solid black}
- .Order{font: 12 Arial; cursor: hand; font-weight: bold; padding-left: 5; padding-right: 5}
- </STYLE>
- </HEAD>
- <BODY>
-
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 CLASS="Table">
- <TR BGCOLOR=#CCCCCC>
- <TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Date<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
- <TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Données 1<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
- <TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Données 2<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
- <TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Données 3<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
- </TR>
- <TR BGCOLOR=#EEEEEE ID=TableDatas><TD>01/02/2003</TD><TD>2</TD><TD>3</TD><TD>Bidule</TD></TR>
- <TR BGCOLOR=#DDDDDD ID=TableDatas><TD>02/02/2003</TD><TD>1</TD><TD>2</TD><TD>Machin</TD></TR>
- <TR BGCOLOR=#EEEEEE ID=TableDatas><TD>03/01/2003</TD><TD>3</TD><TD>1</TD><TD>Truc</TD></TR>
- <TR BGCOLOR=#DDDDDD ID=TableDatas><TD>06/02/2003</TD><TD>5</TD><TD>1</TD><TD>Personne</TD></TR>
- <TR BGCOLOR=#EEEEEE ID=TableDatas><TD><FONT color=#FF0000>05/02/2003</FONT></TD><TD><FONT color=#FF0000>2</FONT></TD><TD><FONT color=#ff0000>4</FONT></TD><TD><FONT color=#FF0000>Autre</FONT></TD></TR>
- <TR BGCOLOR=#CCCCCC><TD>Total</TD><TD>13</TD><TD>11</TD><TD></TD></TR>
- </TABLE>
-
- </BODY>
- </HTML>
<HTML>
<HEAD>
<SCRIPT>
// Code créé par francktfr pour www.systeme-d.net
function SortArray(aText,aHtml,Index,Order){
var Test = Order > 0 ? "aText["+Index+"][b] > aText["+Index+"][a]" : "aText["+Index+"][b] < aText["+Index+"][a]" // Choix de la comparaison
for (a = 0; a < aText[Index].length; a++) // Liste de tous les éléments du tableau
{
for (b = 0; b < aText[Index].length ;b++) // Re-liste tous les éléments pour les comparer à Numbers[a]
{
if (eval(Test)) {
for (i=0; i<aText.length; i++){ // Mise a jour des tableaux
Copy = aText[i][b]; aText[i][b] = aText[i][a]; aText[i][a] = Copy
Copy = aHtml[i][b]; aHtml[i][b] = aHtml[i][a]; aHtml[i][a] = Copy
}
}
}
}
}
function IsDate(sDate){ // retourne true si c'est une date valide
if (sDate.length < 8){return false}
var iDay = sDate.substring(0,2)
var iMonth = sDate.substring(3,5)
var iYear = sDate.substring(6)
iDay = iDay*1
iMonth = (iMonth*1)-1
iYear = iYear*1
var rDate = new Date(iYear,iMonth,iDay,0,0)
if(rDate.toString() == "NaN"){return false}
return true
}
function cDate(sDate){ // Convertie une date du format JJ/MM/AAAA en date JavaScript
var iDay = sDate.substring(0,2)
var iMonth = sDate.substring(3,5)
var iYear = sDate.substring(6)
iDay = iDay*1
iMonth = (iMonth*1)-1
iYear = iYear*1
var rDate = new Date(iYear,iMonth,iDay,0,0)
return(rDate)
}
function TableOrder(Dir){ // 1: Croissant, -1: Décroissant
var oCell = event.srcElement
while (oCell.tagName != "TD"){oCell = oCell.parentElement} // determine la cellule sélectionnée
var oTable = oCell.parentElement
while (oTable.tagName != "TABLE"){oTable = oTable.parentElement} // determine l'objet table parent
var index = -1
for (c=0; c<oTable.rows[0].cells.length; c++){if (oTable.rows[0].cells[c]==oCell){index=c}} // determine l'index de la cellule
var RowNb = 0
var aHtmlTable = new Array() // Tableau de contenu HTML
var aTextTable = new Array() // Tableau de valeur
for (c=0; c<oTable.rows[0].cells.length; c++){ // sur toutes les cellules
var ColonneHtml = new Array()
var ColonneText = new Array()
var RowNb = 0
for (r=0; r<oTable.rows.length; r++){ // de toutes les rangées nommées "TableDatas"
if (oTable.rows[r].id == "TableDatas"){
ColonneHtml[RowNb] = oTable.rows[r].cells[c].innerHTML // met a jour le tableau de colonne correspondant
ColonneText[RowNb] = IsDate(oTable.rows[r].cells[c].innerText) ? cDate(oTable.rows[r].cells[c].innerText) : oTable.rows[r].cells[c].innerText
RowNb++
}
}
aHtmlTable[c] = ColonneHtml
aTextTable[c] = ColonneText
for (a=0; a<ColonneHtml.length; a++){aHtmlTable[c][a]=ColonneHtml[a]}
for (a=0; a<ColonneText.length; a++){aTextTable[c][a]=ColonneText[a]}
}
RowNb=0
SortArray(aTextTable,aHtmlTable,index,Dir) // Tri des données
for (x=0; x<oTable.rows[0].cells.length; x++){ // Remplacement des données dans le tableau HTML
RowNb=0
for (y=0; y<oTable.rows.length; y++){
if (oTable.rows[y].id == "TableDatas"){
oTable.rows[y].cells[x].innerHTML= aHtmlTable[x][RowNb]
RowNb++
}
}
}
}
</SCRIPT>
<STYLE>
.Table{font: 12 Arial; text-align: center; border: 1 solid black}
.Order{font: 12 Arial; cursor: hand; font-weight: bold; padding-left: 5; padding-right: 5}
</STYLE>
</HEAD>
<BODY>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 CLASS="Table">
<TR BGCOLOR=#CCCCCC>
<TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Date<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
<TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Données 1<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
<TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Données 2<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
<TD><SPAN CLASS="Order" onclick="TableOrder(-1)">▼</SPAN>Données 3<SPAN CLASS="Order" onclick="TableOrder(1)">▲</SPAN></TD>
</TR>
<TR BGCOLOR=#EEEEEE ID=TableDatas><TD>01/02/2003</TD><TD>2</TD><TD>3</TD><TD>Bidule</TD></TR>
<TR BGCOLOR=#DDDDDD ID=TableDatas><TD>02/02/2003</TD><TD>1</TD><TD>2</TD><TD>Machin</TD></TR>
<TR BGCOLOR=#EEEEEE ID=TableDatas><TD>03/01/2003</TD><TD>3</TD><TD>1</TD><TD>Truc</TD></TR>
<TR BGCOLOR=#DDDDDD ID=TableDatas><TD>06/02/2003</TD><TD>5</TD><TD>1</TD><TD>Personne</TD></TR>
<TR BGCOLOR=#EEEEEE ID=TableDatas><TD><FONT color=#FF0000>05/02/2003</FONT></TD><TD><FONT color=#FF0000>2</FONT></TD><TD><FONT color=#ff0000>4</FONT></TD><TD><FONT color=#FF0000>Autre</FONT></TD></TR>
<TR BGCOLOR=#CCCCCC><TD>Total</TD><TD>13</TD><TD>11</TD><TD></TD></TR>
</TABLE>
</BODY>
</HTML>
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|