Bonjour,
Il semble que j'ai un probleme pour afficher une infobulle avec une position relative à un élément
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
| <HEAD>
<TITLE>Feuille de résultats</TITLE>
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
var IB=new Object;
var posY=0;
var yOffset=-5;
function AffBulle(eleID, texte, xOffset) {
contenu="<TABLE border=0 cellspacing=0 cellpadding="+IB.NbPixel+"><TR bgcolor='"+IB.ColContour+"'><TD><TABLE border=0 cellpadding=2 cellspacing=0 bgcolor='"+IB.ColFond+"'><TR><TD><FONT size='-1' color='"+IB.ColTexte+"'>"+texte+"</FONT></TD></TR></TABLE></TD></TR></TABLE> ";
if (document.all) {
bulle.innerHTML=contenu;
var ele=document.all["+eleID+"];
yOffset=calculeOffsetTop(ele);
document.all["bulle"].style.top=yOffset;
document.all["bulle"].style.left=xOffset;
document.all["bulle"].style.visibility="visible";
}
}
function getMousePos(e) {
if (document.all) {
posY=event.y+document.body.scrollTop;
}
else {
posY=e.pageY;
}
}
function HideBulle() {
if (document.all) {
document.all["bulle"].style.visibility="hidden";
}
}
function InitBulle(ColTexte,ColFond,ColContour,NbPixel) {
IB.ColTexte=ColTexte;IB.ColFond=ColFond;IB.ColContour=ColContour;IB.NbPixel=NbPixel;
if (document.all) {
document.write("<DIV id='bulle' style='position:absolute;top:0;left:0;visibility:hidden'></DIV>");
document.onmousemove=getMousePos;
}
}
function calculeOffsetTop(r){
return calculeOffset(r,"offsetTop")
}
function calculeOffset(element,attr){
var offset=0;
while(element){
offset+=element[attr];
element=element.offsetParent;
}
return offset;
}
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
InitBulle("black","#FFCC66","orange",1);
</SCRIPT> |
et plus loin dans une table... une cellule:
<td width=30% id='H3480'><font size=-1><A style="color: black; text-decoration: none" href="#" onMouseOver="AffBulle('H3480', 'mon super text', 180)" onMouseOut="HideBulle()">See this ?</A></font></td>
Ce que je cherche à faire c'est à afficher mon info bulle à quelques pixels à droite de mon élément et à "la même hauteur" que lui.
Pour la droite aucun soucis puisque je passe le nombre de pixel, ici 180.
le soucis est avec la hauteur d'affichage car je veux que l'info bulle soit alligné avec mon text "See this ?"
Avec la position de la sourie ça marche moyen car suivant que j'accede au lien par le dessus ou par le dessus l'info bulle se décalle soit vers le haut soit vers le bas.
Bref mon idée c'est de récupéper l'offset de ma cellule et ensuite à partir de là de calculer la position Y de mon info bulle pour l'aligner avec ma cellule (qui elle même contient le lien).
J'ai l'impression que c'est cette partie du code qui ne marche pas donc:
1 2
| var ele=document.all["+eleID+"];
yOffset=calculeOffsetTop(ele); |
Pour info c'est une simple page html sans <FORM> ni <DIV> mais c'est peut etre là aussi le soucis...
Comment je peux récupérer mon élément ?
J'ai l'impressin qu'il me faudrait peut etre utiliser des <DIV> </DIV> mais je ne sais pas où.
J'ai essayé de remplacer ça
1 2
| <td width=30% id='H3480'><font size=-1><A style="color: black; text-decoration: none" href="#" onMouseOver="AffBulle('H3480', 'mon super text', 180)" onMouseOut="HideBulle()">See this ?</A></font></td>
par ça mais sans succes |
<div id='H3480'><td width=30%><font size=-1><A style="color: black; text-decoration: none" href="#" onMouseOver="AffBulle('H3480', 'mon super text', 180)" onMouseOut="HideBulle()">See this ?</A></font></td></div>
Merci de votre aide
Partager