Avatar billede michaelthomassen Nybegynder
09. september 2003 - 20:15 Der er 3 kommentarer og
1 løsning

Menu med div

Jeg har denne kode på min side:

<script>
  function visMenu(userid, e) {
    obj = document.getElementById("menu");
    obj.innerHTML = '<a href="enside.php?viewuserid=' + userid + '">Vis en side</a><br><a href="enandenside.php?viewuserid=' + userid + '">Vis en anden side</a>';
    obj.style.left = 10 + ((document.all) ? event.clientX : e.clientX);
    obj.style.top = 3 + ((document.all) ? event.clientY : e.clientY);
    obj.style.visibility = "visible";
  }
  function skjulMenu(e) {
    obj = document.getElementById("menu");
    id = (document.all) ? event.srcElement.id : e.target.id;
    if (obj.style.visibility == "visible" && id != "menu")
      obj.style.visibility = "hidden";
  }
</script>

<div id="menu" class="topictitle" style="visibility: hidden; position: absolute; width: 150px; height: 30px; background-color: #CCCCCC; border: 1px solid black;"></div>

Menuen kalder jeg således:

<a href="#" onClick="visMenu(46, event); return false;">Michael</a>

Jeg kan ikke helst huske hvor jeg har koden fra, men tak til ham der har lavet den.

Menuen virker fint nok, med mindre jeg scroller ned på siden. Så står den et mærkeligt sted, slet ikke der hvor jeg gerne vil have den.

Jeg kan se at den sætter noget left og top, men disse må stå forkert på en eller anden måde???

På forhånd tak.
Avatar billede roenving Novice
09. september 2003 - 20:47 #1
Har du den menu-div placeret et bestemt sted på siden ?-)

Hvis du har det skal tankemåden laves om i placeringen af menuen ...
Avatar billede michaelthomassen Nybegynder
09. september 2003 - 20:52 #2
Nej, menuen skal placeres umiddelbart ved siden af der hvor man klikker.
Avatar billede michaelthomassen Nybegynder
14. september 2003 - 11:22 #3
Jeg har selv løst problemet (fundet det andet sted).
I stedet for:
obj.style.left = 10 + ((document.all) ? event.clientX : e.clientX);
obj.style.top = 3 + ((document.all) ? event.clientY : e.clientY);

skriver jeg nu:
var rightedge=document.body.clientWidth-event.clientX;
var bottomedge=document.body.clientHeight-event.clientY;
if (rightedge<obj.offsetWidth)
  obj.style.left=document.body.scrollLeft+event.clientX-obj.offsetWidth;
else
  obj.style.left=document.body.scrollLeft+event.clientX;
if (bottomedge<obj.offsetHeight)
  obj.style.top=document.body.scrollTop+event.clientY-obj.offsetHeight;
else
  obj.style.top=document.body.scrollTop+event.clientY;
Avatar billede roenving Novice
14. september 2003 - 11:27 #4
Bueno !-)
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