Avatar billede everclear Praktikant
23. december 2005 - 13:55 Der er 9 kommentarer

Venstreklik menu

Jeg sidder og nørder med en brugerliste og kunne egentligt godt tænke mig, at når man venstreklikker på en bruger, så kommer der en menu frem (ligesom når man højreklikker), hvor man kan vælge nogle forskellige punkter (skriv til, se profil osv).

Kan dette lade sig gøre?
Avatar billede johan.o Nybegynder
23. december 2005 - 14:11 #1
Ja, det skulle nok være muligt.

F.eks. kunne du lave en <div> som denne :

<div style="position: absolute; left: 0px; top: 0px; width: 100px; border: 1px solid blue; display: none;" id="smallMenu">
<a href="link1.htm">Link 1</a><br>
<a href="link2.htm">Link 2</a>
</div>

Og så sætte en onclick handler på det/de elementer du vil have menuen til at virke på, f.eks. :

<span onclick="showMenu(event);">Etneb Hansen</span>

Og så lave en funktion der viser din lille menu der hvor musen er :

function showMenu(e) {
elm=document.getElementById("smallMenu");
elm.style.left=e.clientX+"px";
elm.style.top=e.clientY+"px";
elm.style.display="block"; }

Derudover bør du nok sætte en onclick handler på din body, således at hvis man ikke vil trykke i menuen, så kan man blot trykke et eller andet sted i bodyen, så forsvinder din lille menu :

<body onclick="document.getElementById('smallMenu').style.display='none';">

Det er muligt du skal bruge lidt forskellige properties til at fastslå musens position i forskellige browserer ogderudover er koden ikke lige testet men blot skrevet for at give dig en ide til hvordan det kan gøres :)

Mvh. Johan
Avatar billede everclear Praktikant
23. december 2005 - 14:16 #2
Mit java er ikke så godt så jeg vil meget gerne have noget der virker, da jeg ikke selv har nogen mulighed for at rette ret meget i det:-)

Det helt optimale ville være, at jeg blot kan udskrive min liste over brugere og så på min <a href> sætte en onClick, der kører scriptet....

Can it be done?
Avatar billede johan.o Nybegynder
23. december 2005 - 15:03 #3
--> at jeg blot kan udskrive min liste over brugere og så på min <a href> sætte en onClick <--

Øhm, det er ikke muligt at lave f.eks. dette :

<a href="show.php?user=etneb" onclick="showMenu();">Etneb Hansen</a>

fordi du vil jo aldrig se menuen, da siden umiddelbart efter skifter til show.php, altså kan du ikke lave menu tingen på et <a href>.

Mv. Johan
Avatar billede johan.o Nybegynder
23. december 2005 - 15:06 #4
Du kan dog lave den som en onmouseover handler. Så vil den lille menu komme frem hver gang musen føres over en bruger og kan så laves således at den forsvinder igen ved mouseout.

Mvh. Johan
Avatar billede everclear Praktikant
23. december 2005 - 15:17 #5
Det behøves såmænd heller ikke være på min <a href>. Det skal bare være således, at jeg kan udskrive en liste fra min database over brugere. Når jeg så klikker på en bruger skal menuen komme frem så jeg kan vælge et punkt herunder.

Er det muligt at lave inden for rimelighedens grænser, eller er der en anden løsning?:-)
Avatar billede johan.o Nybegynder
23. december 2005 - 15:45 #6
Prøv og se det her :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<title>Test.</title>
<style type="text/css">

html {
height: 100%; }

body {
height: 100%; }

</style>
<script type="text/javascript">

function showMenu(o,e) {
elm=document.getElementById("smallMenu");
/* elm.style.left=(o.offsetParent.offsetLeft+o.offsetParent.offsetWidth)+"px"; */
/* elm.style.top=o.offsetParent.offsetTop+"px"; */
elm.style.left=(e.clientX+20)+"px";
elm.style.top=e.clientY+"px";
elm.style.display="block"; }

function hideMenu() {
document.getElementById("smallMenu").style.display="none"; }

</script>
</head>

<body style="background-color: #FEFEFE;" onclick="hideMenu();">

<div style="position: absolute; top: 0px; left: 0px; width: 100px; border: 1px solid blue; background-color: #FEFEFE; display: none;" id="smallMenu">
<a href="link1.htm">Link 1</a><br>
<a href="link2.htm">Link 2</a>
</div>

<table style="width: 200px; margin: 0px auto;"><tr>
<td>User 1 :</td><td><a href="showUser.php?user=1" onmouseover="showMenu(this,event);">Etneb Hansen</a></td>
</tr><tr>
<td>User 2 :</td><td><a href="showUser.php?user=2" onmouseover="showMenu(this,event);">Kire Mogensen</a></td>
</tr><tr>
<td>User 3 :</td><td><a href="showUser.php?user=3" onmouseover="showMenu(this,event);">Naj Nielsen</a></td>
</tr></table>

</body>
</html>

Lad høre om det kan bruges :)

Mvh. Johan
Avatar billede everclear Praktikant
27. december 2005 - 09:11 #7
Det er næsten helt perfekt:-) Men kan man lave det så menuen først kommer frem, når man klikker på linket i stedet for når man holder musen over den?

Og glædelig jul forresten:-)
Avatar billede everclear Praktikant
27. december 2005 - 11:43 #8
Har luret den med at få den til at virke sammen med klik. Men det kræver jo, at jeg fjerner onclick="hideMenu();" i mit body tag.

Nu kan jeg jo så ikke få lukket vinduet igen:-) Nogle fikse ideer?
Avatar billede johan.o Nybegynder
28. december 2005 - 00:20 #9
function hideMenu() {
if(document.getElementById("smallMenu").style.display!="none") {
  document.getElementById("smallMenu").style.display="none"; } }

onclick i body tag !

Måske ? og i lige måde :)

Mvh. Johan
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