Bonjour,
Voici ce que je souhaiterais faire:
J'ai un gros tableau (200 cases). Je voudrais qu'un cadre s'affiche à coté du curseur indiquant quelle ligne/colonne correspond à la position du curseur.
J'ai trouvé un code que j'ai adapté. Ce code fonctionne parfaitement mais est assez lent et utilise vite 100% du cpu si le curseur bouge rapidement.
J'apelle en fait une fonction javascript sur le onmouseover des td, et j'apelle une autre fonction qui efface ce cadre lors du onMouseOut.
Voici le code du tableau:
Les fonctions javascripts:
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 <? $ligne=1; $col=1; ?> <table align="center" bgcolor="#CCCCCC" cellpadding="0" cellspacing="0"> <? while($ligne<=10){ ?> <tr> <? while($col<=20){ ?> <td onmouseover="rollOn(<? echo $ligne; ?>,<? echo $col; ?>)" onMouseOut="rollOut()" onclick="Reserv(<? echo $ligne; ?>,<? echo $col; ?>)"></td> <? $col++; } ?> </tr> <? $ligne++; $col = 1; } ?> </table>
Et la feuille de style (du bloc affiché)
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 var brWidth = 0, xCoord, yCoord; if (typeof(window.innerWidth)=='number') { brWidth = window.innerWidth; } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { brWidth = document.documentElement.clientWidth; } function rollOn(l,c) { icon = document.getElementById('tooltip'); icon.innerHTML = "Ligne: "+l+"<br \>Colonne: "+c; icon.style.position='absolute'; if (xCoord <= (brWidth-200)) { icon.style.left = xCoord + 5 + "px"; } else { icon.style.left = xCoord - 205 + "px"; } icon.style.top = yCoord+5+"px"; icon.style.visibility = 'visible'; } function rollOut() { icon = document.getElementById('tooltip'); icon.style.visibility='hidden'; } function checkwhere(e) { if (document.all) { xCoord = event.clientX+document.documentElement.scrollLeft; yCoord = event.clientY+document.documentElement.scrollTop; } else if (document.getElementById) { xCoord = e.clientX+document.documentElement.scrollLeft; yCoord = e.clientY+document.documentElement.scrollTop; } } document.onmousemove = checkwhere; if(document.captureEvents) {document.captureEvents(Event.MOUSEMOVE);} function Reserv(l,c) { var adr="reserv.php?l="+l+"&c="+c; window.location.replace(adr); }
Il y a une image de fond dans ce cadre, mais ce n'est pas celà qui fait ralentir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 .tooltip { BORDER-RIGHT: #000000 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #000000 1px solid; PADDING-LEFT: 4px; FONT-WEIGHT: bold; FONT-SIZE: 0.8em; FILTER: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/drapsurv.gif",sizingMethod="scale"); VISIBILITY: hidden; PADDING-BOTTOM: 0px; BORDER-LEFT: #000000 1px solid; height:80px; WIDTH: 200px; COLOR: #000000; PADDING-TOP: 0px; BORDER-BOTTOM: #000000 1px solid; POSITION: absolute }
Je pense qu'il faudrait un code qui affiche un cadre en suivant la souris si celle-ci est dans le tableau et actualise le contenu du cadre en fonction de la cellule survolée...
Si vous connaissez un script qui fait ceci ou une facon d'optimiser le code plus haut, je suis preneur
Partager