k666 dites non à petitmou | bon déolé de vous avoir ennuyé! j'ai trouvé et ça marche
fallait faire un new Object(); pour que le node DOM soit pas copié par référence mais par valeur ....
bon je ponds le code;
explications: ça fait un tri de colonne sur un tableau HTML avec plein de valeurs ... c que du client side donc c sympa, ça diminue le nombre de requêtes sql etc....
voilà donc: (je dois le cleaner c clair)
Code :
- <HTML>
- <HEAD>
- <script type="text/javascript">
- var transTable;
- var tableValues;
- var tableContents;
- var sortedField;
- var cancelSort = false;
- /*************************************
- * fonctions à 2 francs *
- *************************************/
- // clean tous les tags HTML, retourne le texte contenu ...
- function extractValue(shitty)
- {
- if (shitty.length > 0)
- {
- while( (shitty.indexOf("<" ) >= 0) && (shitty.indexOf(">" ) > shitty.indexOf("<" )) )
- {
- shitty = shitty.substr(0,shitty.indexOf("<" )) + shitty.substr(shitty.indexOf(">" )+1,shitty.length);
- }
- return shitty;
- }
- return;
- }
- // échange deux cases de tableau
- function swap(i, j)
- {
- if (i==j)
- return !cancelSort;
- var t=tableValues[i];
- tableValues[i]=tableValues[j];
- tableValues[j]=t;
- var u = transTable[i];
- transTable[i] = transTable[j];
- transTable[j] = u;
- return !cancelSort;
- }
- // algorithme de tri
- function quickSort1(start, end)
- {
- if (end-start > 1 && !cancelSort)
- {
- var lastlow=start;
- for (var i=start+1; i<end; ++i)
- {
- if (tableValues[i][sortedField]<tableValues[start][sortedField])
- if (!swap(i, ++lastlow))
- return;
- }
- if (!swap(start, lastlow))
- return;
- quickSort1(start, lastlow);
- if (!cancelSort)
- quickSort1(lastlow+1, end);
- }
- }
- /*************************************
- * /fonctions à 2 francs\ *
- *************************************/
- // réorganise le tableau ...
- function quickSort(obj,sorted)
- {
- var nblines = obj.childNodes[0].childNodes.length;
- var nbcols = obj.childNodes[0].childNodes[0].childNodes.length;
- tableValues = new Array(nblines);
- tableContents = new Array(nblines);
- transTable = new Array(nblines);
- sortedField = sorted;
- for (n=1;n<nblines;n++)
- {
- transTable[n] = n;
- }
- for (i=0;i<nblines;i++)
- {
- tableValues[i] = new Array(nbcols);
- tableContents[i] = new Array(nbcols);
- for (j=0;j<nbcols;j++)
- {
- tableValues[i][j] = extractValue(obj.childNodes[0].childNodes[i].childNodes[j].innerHTML);
- tableContents[i][j] = obj.childNodes[0].childNodes[i].childNodes[j].innerHTML;
- }
- }
- quickSort1(1,nblines);
- var tempNode = new Array();
- for (i=1;i<nblines;i++)
- {
- tempNode[i] = new Object();
- tempNode[i] = obj.childNodes[0].childNodes[1].cloneNode(obj.childNodes[0].childNodes[1]);
- obj.childNodes[0].removeChild(obj.childNodes[0].childNodes[1]);
- }
- for (i=1;i<transTable.length;i++)
- {
- obj.childNodes[0].appendChild(tempNode[transTable[i]])
- }
- }
- </script>
- </HEAD>
- <BODY>
- <table border="1" name="ma_table" id="ma_table">
- <tr>
- <th><a href="javascript:quickSort(document.getElementById('ma_table'),0);">pouett</a></th>
- <th><a href="javascript:quickSort(document.getElementById('ma_table'),1);">prout</a></th>
- <th><a href="javascript:quickSort(document.getElementById('ma_table'),2);">coin</a></th>
- <th><a href="javascript:quickSort(document.getElementById('ma_table'),3);">coin</a></th>
- </tr>
- <tr>
- <td>1</td>
- <td>25_9o</td>
- <td>zigatrik</td>
- <td>crik</td>
- </tr>
- <tr>
- <td>3</td>
- <td>paparaze</td>
- <td>sepi</td>
- <td></td>
- </tr>
- <tr>
- <td>2</td>
- <td>paparaze</td>
- <td>sepi</td>
- <td></td>
- </tr>
- <tr>
- <td>4</td>
- <td>paparaze</td>
- <td>sepi</td>
- <td></td>
- </tr>
- <tr>
- <td>6</td>
- <td>asdfze</td>
- <td>scoinepi</td>
- <td></td>
- </tr>
- <tr>
- <td>5</td>
- <td>paparaze</td>
- <td>123sepi</td>
- <td></td>
- </tr>
- <tr>
- <td>3</td>
- <td>paparaze</td>
- <td>sepi</td>
- <td></td>
- </tr>
- </table>
- </BODY>
- </HTML>
|
merci à ceux qui m'ont un peu aidé et si vous avez de l'aide ou des commentaires ou suggestions je suis preneur @+ |