Bonsoir à tous,

J'ai fait un tri dynamique de tableau HTML avec le DOM

Mon tableau s'affiche dans un div avec un overflow

Quand le nombre de lignes du tableau dépasse la hauteur
imposée par le div, en jouant avec l'ascensseur la ligne
d'entète disparait dans le haut de la liste, et par le
fait on ne vois plus le nom des colonnes et donc plus
de possibilité d'effectuer un tri.

Je vous propose mon source pour que vous puissiez me
dire si ce que je voudrais faire est possible et si oui, comment ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
88
 
<HTML>
<STYLE>
#trier { background-color:white; color:black; border-collapse:collapse; BORDER:white 1px solid; FONT:12 Arial; TEXT-ALIGN:center }
#trier TR { background-color:#ffefd5 }
#trier .title { background-color:#bf2b2f; FONT:14 Arial; color:#ffffff; font-weight:bold }
SPAN { FONT:bold 12 Arial; CURSOR:pointer }
BODY { background-color:#FFF5E5 }
#trier TD { BORDER:white 1px solid; }
SPAN { FONT:bold 12 Arial; CURSOR:pointer }
BODY { background-color:#FFF5E5;}
</STYLE>
 
<SCRIPT>
var index
function  sort_int(p1,p2) { return p1[index]-p2[index]; }			//fonction pour trier les nombres
function sort_char(p1,p2) { return ((p1[index]>=p2[index])<<1)-1; }	//fonction pour trier les strings
 
function TableOrder(e,Dec)  //Dec= 0:Croissant, 1:Décroissant
{ //---- Détermine : oCell(cellule) oTable(table) index(index cellule) -----//
	var FntSort = new Array()
	if(!e) e=window.event
	for(oCell=e.srcElement?e.srcElement:e.target;oCell.tagName!="TD";oCell=oCell.parentNode);	//determine la cellule sélectionnée
	for(oTable=oCell.parentNode;oTable.tagName!="TABLE";oTable=oTable.parentNode);				//determine l'objet table parent
	for(index=0;oTable.rows[0].cells[index]!=oCell;index++);									//determine l'index de la cellule
 
 //---- Copier Tableau Html dans Table JavaScript ----//
	var Table = new Array()
	for(r=1;r<oTable.rows.length;r++) Table[r-1] = new Array()
 
	for(c=0;c<oTable.rows[0].cells.length;c++)	//Sur toutes les cellules
	{	var Type;
		objet=oTable.rows[1].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
		if(objet.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) { FntSort[c]=sort_char; Type=0; } //date jj/mm/aaaa
		else if(objet.match(/^[0-9£?$\.\s-]+$/))		{ FntSort[c]=sort_int;  Type=1; } //nombre, numéraire
		else											{ FntSort[c]=sort_char; Type=2; } //Chaine de caractère
 
		for(r=1;r<oTable.rows.length;r++)		//De toutes les rangées
		{	objet=oTable.rows[r].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
			switch(Type)		
			{	case 0: Table[r-1][c]=new Date(objet.substring(6),objet.substring(3,5),objet.substring(0,2)); break; //date jj/mm/aaaa
				case 1: Table[r-1][c]=parseFloat(objet.replace(/[^0-9.-]/g,'')); break; //nombre
				case 2: Table[r-1][c]=objet.toLowerCase(); break; //Chaine de caractère
			}
			Table[r-1][c+oTable.rows[0].cells.length] = oTable.rows[r].cells[c].innerHTML
		}
	}
 
 //--- Tri Table ---//
	Table.sort(FntSort[index]);
	if(Dec) Table.reverse();
 
 //---- Copier Table JavaScript dans Tableau Html ----//
	for(c=0;c<oTable.rows[0].cells.length;c++)	//Sur toutes les cellules
		for(r=1;r<oTable.rows.length;r++)		//De toutes les rangées 
			oTable.rows[r].cells[c].innerHTML=Table[r-1][c+oTable.rows[0].cells.length];  
}
</SCRIPT>
 
<body>    
<p>&nbsp;</p>
<p>&nbsp;</p>
<center>
<div align="center" style="height:100px; width:340px; overflow:auto; font-family: Times New Roman; font-size: 10px">
<table id=trier align="center">
	<tr class=title>
		<td>Chevaux <span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Date	<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Age		<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Ind		<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
	</tr>
	<tr><td style="text-align: left"><a id="aff2" class="tt2">&nbsp;TORNADE DU 
		DECLIC&nbsp;&nbsp; </a></td><td>&nbsp;20/03/2005&nbsp;</td><td>4</td><td id=money>127.1 </td></tr>
	<tr><td style="text-align: left"><a id="aff3" class="tt2">&nbsp;PITCHPIN DES 
		BOIS</a></td><td>&nbsp;22/02/2005&nbsp;</td><td> 3</td><td id=money>127.8</td></tr>
	<tr><td style="text-align: left"><a id="aff4" class="tt2">&nbsp;RENATE DES 
		LANDES</a></td><td>&nbsp;23/02/2005&nbsp;</td><td>7</td><td id=money>128.2</td>	</tr>
	<tr><td style="text-align: left"><a id="aff5" class="tt2">&nbsp;MIGUEL DES 
		VOLOS</a></td><td>&nbsp;23/05/2005&nbsp;</td><td>6</td><td id=money>129.6</td></tr>
	<tr><td style="text-align: left"><a id="aff6" class="tt2">&nbsp;NIKY DU 
		DONJON</a></td><td>&nbsp;23/02/2006&nbsp;</td><td>5</td><td id=money>131.3</td></tr>
	<tr><td style="text-align: left"><a id="aff6" class="tt2">&nbsp;NIKY DU 
		GOLF</a></td><td>&nbsp;23/02/2005&nbsp;</td><td>5</td><td id=money>128.6</td></tr>
 
</table>
</div>
</body>
</html>
J'ai fait les modifications suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
<table id=trierrr align="center">
	<tr class=title>
		<td>Chevaux <span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Date	<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Age		<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Ind		<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
	</tr>
 
</table>
 
<div align="center" style="height:100px; width:340px; overflow:auto; font-family: Times New Roman; font-size: 10px">
 
<!--
<table id=xtrier align="center">
	<tr class=xtitle>
		<td>Chevaux <span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Date	<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Age		<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
		<td>Ind		<span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
	</tr>
-->	
<table>
	<tr><td style="text-align: left"><a id="aff2" class="tt2">&nbsp;TORNADE DU 
		DECLIC&nbsp;&nbsp; </a></td><td>&nbsp;20/03/2005&nbsp;</td><td>4</td><td id=money>127.1 </td></tr>
	<tr><td style="text-align: left"><a id="aff3" class="tt2">&nbsp;PITCHPIN DES
Mais la, j'ai une erreur dans la partie javascript :
oCell=oCell.parentNode a la valeur null

Je ne m'en sort pas , si vous avez une idée !