begin process at 2012 05 30 02:26:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Function & Méthodes

 > 

Tri à bulles d'un tableau HTML


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tri à bulles d'un tableau HTML

mercredi 15 juillet 2009 à 18:13:41 | Tri à bulles d'un tableau HTML

Airman31

Tout d'abord bonjour à tous,

J'ai besoin d'un petit coup de main pour une fonction Javascript que je suis en train d'implémenter : tri à bulle sur un tableau HTML (comme dans le titre ^^)

Comment ça marche :
Un tableau HTML "simple" est affiché et, lorsque l'utilisateur clique sur une des entêtes de colonnes, l'intégralité du tableau est trié en fonction des données contenues dans cette colonne. L'idée finale étant de mettre en place un systême de datagrid.

Mon code-source est à l'heure actuelle fonctionnel mais je pense qu'il est possible de faire beaucoup mieux au niveau de l'optimisation.
En effet, effectuer ce tri à bulles sur un tableau 36(colonnes)*50(lignes) engendre un temps de traitement d'environ 2,6sec . Sachant que la version finale se devra de gérer plusieurs centaines de lignes, je pense que je dois trouver un bon moyen de réduire ce timing et c'est donc là que je sollicite votre aide .

Maintenant que l'introduction est effectuée passons aux choses sérieuses : le code source !

Donc en premier le code HTML à l'origine de l'événement :

Code HTML :

<table class="sortable">
<thead>
<tr>
<th onclick="tribulle(this,0,int,'ASC')">id</th>
<th onclick="tribulle(this,1,int,'ASC')">FK_entities</th>
<th onclick="tribulle(this,2,int,'ASC')">name</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>12</td>
<td>blabla</td>
</tr>
.
.
.
<tr>
<td>2</td>
<td>584</td>
<td>blabla</td>
</tr>
</tbody>
</table>


Enfin le code Javascript :
Code Javascript :

//fonction de tri à bulle
function tribulle(entitie,column,type,sens)
{
Debut = new Date();
// on recupere la reference au tableau passe en parametre (entitie)
var tableRef = entitie;
y=0;
while(tableRef.nodeName!="TABLE" && y<5)
{
tableRef=tableRef.parentNode;
y++;
}

//nombre de lignes du tableau
var nbl = tableRef.rows.length;

//instanciation de la variable de test sur l'ordonnancement
var en_desordre=true;

//tant que le tableau est desordonne
while(en_desordre)
{
en_desordre = false;

//on boucle sur els elements (lignes) du tableau
for(i=1;i<nbl-1;i++)
{
var val1 = tableRef.rows[i].cells[column].innerHTML;
var val2 = tableRef.rows[i+1].cells[column].innerHTML;

//parse les donnes en fonctions du parametre "type"
if(type=='int' || type=='integer'|| type=='tinyint' || type=='smallint' || type=='medint' || type=='bigint')
{val1=parseInt(val1);val2=parseInt(val2);}
else
if (type=='float' || type=='double' || type=='real' || type=='decimal' || type=='numeric')
{val1=parseFloat(val1);val2=parseFloat(val2);}
//si 2 lignes sont en desordre
if(val1 > val2)
{
//on clone la ligne suivant avant la ligne courante
clone(tableRef,tableRef.rows[i+1],i);
//on incremente le curseur a cause de l'injection de la nouvelle ligne
i++;
//on supprime la ligne qui a ete dupliquee
tableRef.deleteRow(i+1);
//le tableau est considere en desordre
en_desordre = true;
}
}
}
Fin = new Date();
alert((Fin-Debut)+ " ms d'execution javascript");
}


function clone(table,rows,index)
{
var len = rows.cells.length;
var newRow = table.insertRow(index);
for(y=0;y<len;y++)
{
var newCell = newRow.insertCell(y);
newCell.innerHTML = rows.cells[y].innerHTML;
}
}


Je suis preneur de tous conseils ou exemples mais sachez que je ne suis pas un pro du Javascript donc je vous demanderai juste de commenter ou expliquer vos post.

Je vous remercie à tous d'avance pour votre aide.

mercredi 15 juillet 2009 à 18:39:05 | Re : Tri à bulles d'un tableau HTML

Bul3

Membre Club




Bonjour,

pourquoi tu t'embêtes ?
quoi que tu fasses tu sera moins bon que le
sort() que existe en javascript !

ch'tiot exemple iciTapez le texte de l'url ici.

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

jeudi 16 juillet 2009 à 09:59:09 | Re : Tri à bulles d'un tableau HTML

Airman31

Je viens de mettre en place et de tester ton code.

A part un petit soucis d'adapation des types, il fonctionne très bien ^^.

Je passe de 2,6sec à 320ms (90% de gain de temps) ce qui est plûtot honorable .

ça va bien m'aider dans mon projet.
En esperant pouvoir te renvoyer l'ascenceur un jour, je te remercie pour tout.

jeudi 16 juillet 2009 à 10:13:19 | Re : Tri à bulles d'un tableau HTML

Bul3

Membre Club

essaye, si c'est possible avec ton tableau,
de remplacer innerHTML par innerText
tu devrais encore gagner du temps.



Cette discussion est classée dans : code, tableau, tri, html, color


Répondre à ce message

Sujets en rapport avec ce message

Tri de colonnes d'un tableau html grâce à un js [ par ebenedzer ] SalutJe n'arrive pas à trouver comment je peux trier les colonnes d'un tableau fait en html, à l'aide d'un javascript.Est-ce que je dois mettre des ba Trier dynamiquement un tableau HTML (à l'aide de XML, XSL, Javascript) [ par edevouge ] Bonjour, Dans le cadre d'un stage, j'ai besoins de créer un tableau html à partir d'un fichier XML et d'un fichier XSL. Et grâce au JavaScript, je v tableau dynamique avec jquery [ par mdh12 ] salut, je veux savoir est ce que c'est possible de créer un tableau dynamique avec jquery en html si on fait appel à ce tableau [code=html][code=htm Un ^peu d`aide si possible [ par SamJC ] Bonjour, j'avais besoin de laide en JS donc je me suis inscrit a ce site, si c'est possible sa serait apprecier Donc, comme exercice pour une classe c Problème faux popus [ par TheWav ] Bonjour, J'ai essayé le code suivant: http://www.javascriptfr.com/codes/SYSTEME-FAUSSES-BELLES-POPUP-JS-HTML_15986.aspx et j'ai rencontré un problème [HTML - JS. . .] Recherche sur le site [ par HACKANDROID ] [size=200][color=gray]Bonjour, J'ai une question : Comment crée un option de recherche en ajax ou normal (Page de résultat)... Voila quelque chose javascript et php [ par anthony428 ] Bonjour à tous, je me suis mis à javascript depuis peu et d'habitude, je code plutôt en php mais il faut dire que les fonctions javascript offrent un Fermer Iframe [ par midoxe ] Bonjour les amis, je suis vraiment bloqué à cause de se problème...[^^sad1] dans une [color=blue]page1.html[/color] j'ai une image(loupe)..dès que j Les boites de texte avec CSS [ par RoMz34 ] Bonjour, Il y à quelques jours, je me suis lancer dans le design d'un site web, et maintenant, j'aimerais le coder ;). J'ai donc suivit quelques tuto Probleme Rafraîchissement tableau master détails [ par aymen8219 ] bonjour, je suis entrain de développer un interface pour la consultation des action en bourse. je viens de créer deux tableau master détails en Jquer


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales