Avatar billede Mik2000 Professor
20. januar 2008 - 18:40 Der er 7 kommentarer og
1 løsning

Inforude ved mouseover

Hej

Jeg skal have det sådan at når man kører musen hen over et navn, så viser den oplysninger om personen i et lille vindue der fremkommer ved musen - div layer.

Jeg kan sagens hente oplysninger osv - evt. også ved hjælp af AJAX.

Men hvordan er det nu lige at man får div layeren til at komme præcis ved musen når man kører den over navnet?
Avatar billede w13 Novice
20. januar 2008 - 19:10 #1
Du kan indsætte følgende kode til at finde musens koordinater:
--------------------------------------------------------------
<script type="text/javascript" language="javascript">
var X=Y=0,IE=document.all?true:false;
if(!IE)document.captureEvents(Event.MOUSEMOVE)
function getMouseXY(e){
  if(IE){
    X=event.clientX+document.body.scrollLeft;
    Y=event.clientY+document.body.scrollTop;
  }else{
    X=e.pageX;
    Y=e.pageY;
  } 
  if(X)X=0;
  if(Y)Y=0;
  return true
}
document.onmousemove=getMouseXY;
</script>
--------------------------------------------------------------
Så kan du bare bruge variablerne X og Y, når div'en skal placeres. F.eks.:

o=document.getElementById("diven");
o.style.top=Y+"px";
o.style.left=X+"px";
Avatar billede w13 Novice
20. januar 2008 - 19:17 #2
Hov, der var lige en fejl:
-----------------------------------------------------
<script type="text/javascript" language="javascript">
var X=Y=0,IE=document.all?true:false;
if(!IE)document.captureEvents(Event.MOUSEMOVE)
function getMouseXY(e){
  if(IE){
    X=event.clientX+document.body.scrollLeft;
    Y=event.clientY+document.body.scrollTop;
  }else{
    X=e.pageX;
    Y=e.pageY;
  } 
  if(X<0)X=0;
  if(Y<0)Y=0;
  return true
}
document.onmousemove=getMouseXY;
</script>
-----------------------------------------------------
Eller mere kompakt:
-----------------------------------------------------
<script type="text/javascript" language="javascript">
var X=Y=0,IE=document.all?true:false;if(!IE)document.captureEvents(Event.MOUSEMOVE);function getMouseXY(e){if(IE){X=event.clientX+document.body.scrollLeft;Y=event.clientY+document.body.scrollTop}else{X=e.pageX;Y=e.pageY;};if(X<0)X=0;if(Y<0)Y=0;return true};document.onmousemove=getMouseXY;
</script>
Avatar billede Mik2000 Professor
20. januar 2008 - 20:32 #3
Hmmm jeg er ikke 100% med på hvordan man benytter dette...
Skal også lige høre om det både virker i IE, Firefox og Safari?

Mine umiddelbare spørgsmål, hvis det virker i dem er:
1: Hvordan får man det til at komme når man kører musen over en tekst?
2: Hvordan styrer man størrelsen på den?
Avatar billede w13 Novice
20. januar 2008 - 20:51 #4
Det burde fungere i de fleste browsere. Her er et fuldt fungerende eksempel:
--------------------------------------------------------------------
<html>
<head>
<title>Eksempel</title>
<script type="text/javascript" language="javascript">
var X=Y=0,IE=document.all?true:false;if(!IE)document.captureEvents(Event.MOUSEMOVE);function getMouseXY(e){if(IE){X=event.clientX+document.body.scrollLeft;Y=event.clientY+document.body.scrollTop}else{X=e.pageX;Y=e.pageY;};if(X<0)X=0;if(Y<0)Y=0;return true};document.onmousemove=getMouseXY;
function ToggleDisplay(o){o.style.display=o.style.display=="inline"?"none":"inline"}
function ShowInfo(o){
    o=document.getElementById(o);
    ToggleDisplay(o);
    o.style.top=Y+"px";
    o.style.left=X+"px";
}
</script>
<style type="text/css">
.info{
    display:none;
    position:absolute;
    width:400px;
    margin:10px;
    background-color:#fff;
    border:1px solid #000;
}
</style>
</head>
<body>

<span onmouseover="ShowInfo('tekst1')" onmouseout="ShowInfo('tekst1')">Tekst1</span><br>
<span onmouseover="ShowInfo('tekst2')" onmouseout="ShowInfo('tekst2')">Tekst2</span><br>
<span onmouseover="ShowInfo('tekst3')" onmouseout="ShowInfo('tekst3')">Tekst3</span><br>

<div id="tekst1" class="info">Hello</div>
<div id="tekst2" class="info">World</div>
<div id="tekst3" class="info">!</div>

</body>
</html>
Avatar billede w13 Novice
20. januar 2008 - 20:55 #5
margin:10px;

skulle være:

    padding:10px;

Og koden er i øvrigt testet i Internet Explorer, Firefox, Safari, Opera, Netscape, Flock og Seamonkey (dem jeg lige havde liggende), og den virker fint i alle. =)
Avatar billede Mik2000 Professor
20. januar 2008 - 21:39 #6
Super - endnu engang point til dig. Tak for hjælpen :)
Avatar billede w13 Novice
20. januar 2008 - 22:05 #7
Og tak for point igen. =)
Avatar billede Mik2000 Professor
21. januar 2008 - 01:50 #8
Det var så lidt :). Tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester