Bonjour,
Dans une table HTML je cherche à ajouter une fonction simple de trie concernant la taille (Croissant/Décroissant) :
Comment faire pour faire un trie du type Size ?Code:
1
2
3
4
5
6
7
8 0 22 7.8K 29K 606K 8.0M 12.6M
Merci
Version imprimable
Bonjour,
Dans une table HTML je cherche à ajouter une fonction simple de trie concernant la taille (Croissant/Décroissant) :
Comment faire pour faire un trie du type Size ?Code:
1
2
3
4
5
6
7
8 0 22 7.8K 29K 606K 8.0M 12.6M
Merci
convertir tout en o dans la fonction en conservant un indexe pour le relier à son nr de ligne. puis utiliser la fonction de tri de tableaux que j'ai déja donnée sur le forum.
Gnéé :calim2:Citation:
en conservant un indexe pour le relier à son nr de ligne
Tu as pas un exemple à me donner plutôt ?
Dans l'idée si tu n'as pas le reste des lignes a associer, tu peux te passer de la conservation de l'indexe
par contre si il y a d'autres td associés qui doivent suivre le tri il faudra aussi stocker l'indexe de ligneCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <script type='text/javascript' src="http://code.jquery.com/jquery.js"></script> <script type='text/javascript'> function tri(a,b){ return (+a >= +b)?1:-1 } $(function(){ tabtailles=new Array() $('#tailles tr').find('td:eq(0)').each( function(){ tabtailles.push( $(this).html() ) }) tabo=new Array() tabK=new Array() tabM=new Array() $.each(tabtailles, function(idx,valr){ switch ( valr.match(/.$/)[0] ){ case "K" : tabK.push( valr.match(/(\d|\.)+/)[0] ) break; case "M" : tabM.push(valr.match(/(\d|\.)+/)[0]) break; default: tabo.push(valr) break; } }) tabo.sort(tri) tabK.sort(tri) tabM.sort(tri) $.each(tabK,function(a,b){ tabK[a]=b+"K"}) $.each(tabM,function(a,b){ tabM[a]=b+"M"}) var tabsorted=tabo.concat(tabK,tabM) $('#tailles tr').find('td:eq(0)').each( function(a,b){ $(this).html( tabsorted[a] ) }) }) </script> <title>Nouvelle page 1</title> </head> <body> <table id='tailles'> <tr> <td>56</td> </tr> <tr> <td>8.0M</td> </tr> <tr> <td>0</td> </tr> <tr> <td>8</td> </tr> <tr> <td>12.6M</td> </tr> <tr> <td>29K</td> </tr> <tr> <td>606K</td> </tr> <tr> <td>22</td> </tr> <tr> <td>7.8K</td> </tr> </table> </body> </html>
Bonsoir et merci pour ton exemple !
Que veut dire ta regex : match(/(\d|\.)+/)
Oui, il y a d'autres TD associés à la valeur Size. J'ai un peux de mal à comprendre ton code :aie:Citation:
par contre si il y a d'autres td associés qui doivent suivre le tri il faudra aussi stocker l'indexe de ligne
Ici, je ne vois pas comment réintégrer les autres colonnes correspondantes à la colonne lue (size)
\d => numériqueCode:match(/(\d|\.)+/)
\. => .
c'est pour supprimer le K ou M final
Il serait sans doute moins gourmand de le faire avec un substr ...
pour ce qui est de stocker le nr de ligne ce n'est sans doute pas necessaire en fait car il suffirait dans la boucle sur le tableau trier d'appender la ligne avec un having sur le contenu de la cellule de taille ...