Avatar billede donslund Nybegynder
26. maj 2004 - 21:58 Der er 16 kommentarer og
1 løsning

Menu ved klik.

Det kan godt være, at det er lidt langhåret, men kan jeg ved klik på et billede få en minimenu frem med 2 punkter i?
Avatar billede roenving Novice
26. maj 2004 - 22:01 #1
Ja, afhængig af, hvor omfattende det er, kan overLib være svaret:

http://www.bosrup.com/web/overlib/
Avatar billede skovenborg Nybegynder
26. maj 2004 - 22:02 #2
eller bare:
<script type="text/javascript">
  function showhide(elm) {
      elm.style.display = (elm.style.display == "none") ? "block" :"none";
  }
</script>

<img src="logo.png" onclick="showhide(document.getElementById('menuDiv'));" />
<div id="menuDiv" style="display:none;">
<a href="#">LINK1</a><br />
<a href="#">LINK1</a>
</div>
Avatar billede donslund Nybegynder
26. maj 2004 - 22:39 #3
Skovenborg: Det virker umiddelbart fint. Gider du foklare elm.style.display = (elm.style.display == "none") ? "block" :"none"; på normal dansk?
Avatar billede thesurfer Nybegynder
26. maj 2004 - 22:48 #4
(elm.style.display == "none") ? "block" :"none";

Betydning: hvis elm.style.display er lig "none", skal den være "block", ellers skal den være "none".

Den kode er smartere og kortere, end den ellers ville være:

if (elm.style.display == "none") {
  elm.style.display = "block";
} else {
  elm.style.display = "none";
}
Avatar billede skovenborg Nybegynder
26. maj 2004 - 22:49 #5
det er faktisk det samme som at skrive:
if (elm.style.display == "none") {elm.style.display = "block";}
else {elm.style.display = "none");

det andet er blot en kort måde at skrive det på. Den virker på den måde at man skriver:
variabel = (condition) ? returner hvis sand : returner hvis falsk;

På den måde kan man skrive at hvis elm.style.display er lig med "none" så bliver elm.style.display sat til block og ellers til none
Avatar billede donslund Nybegynder
26. maj 2004 - 22:50 #6
Og hvis jeg så vil overføre det på noget andet, så sætter jeg det sammen med en funktion der placerer en billedfil alt efter hvad der vælges i menuen. Men hvorfor kan jeg kun trykke en gang?

function set_x(tegn) {
    document.getElementById(tegn).style.visibility = 'visible';
    document.getElementById(tegn).style.position = 'absolute';
    document.getElementById(tegn).style.left = parseInt(document.kord.corx.value) + 97;
    document.getElementById(tegn).style.top = parseInt(document.kord.cory.value) + 96;
    document.getElementById("menuDIV").style.visibility = 'hidden';
}

function showhide(elm) {
    elm.style.display = (elm.style.display == "none") ? "block" :"none";
  document.getElementById("menuDIV").style.position = 'absolute';
    document.getElementById("menuDIV").style.left = parseInt(document.kord.corx.value) + 100;
  document.getElementById("menuDIV").style.top = parseInt(document.kord.cory.value) + 100;
}
Avatar billede skovenborg Nybegynder
26. maj 2004 - 22:51 #7
du kan også se her for den officiele dokumentation:
http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/ops.html#1045406

hvis det hjælper noget...
Avatar billede donslund Nybegynder
26. maj 2004 - 22:53 #8
relevant læsning hjælper altid.
Avatar billede skovenborg Nybegynder
26. maj 2004 - 22:59 #9
gider du forresten vise et link eller selve html-koden... det ville hjælpe en del.
Avatar billede thesurfer Nybegynder
26. maj 2004 - 23:04 #10
"normalt" bruger man ikke: <img src="logo.png" onclick="showhide(document.getElementById('menuDiv'));" />

men kun: <img src="logo.png" onclick="showhide('menuDiv');" />

og derefter:

<script type="text/javascript">
function showhide(elm) {
  obj = document.getElementById(elm).style;
  obj.display = (obj.display == "none") ? "block" :"none";
}
</script>

Man kan muligvis bruge:
  obj = document.getElementById(elm).style.display);
  obj = (obj == "none") ? "block" :"none";
Avatar billede skovenborg Nybegynder
26. maj 2004 - 23:10 #11
---uden parentesen til sidst naturligvis ;-)

ved faktisk heller ikke hvorfor jeg lavede det på den måde - sikkert for rigdom og berømmelse og den slags, eller blot fordi jeg ikke tænkte mig om ;-)
Avatar billede roenving Novice
26. maj 2004 - 23:37 #12
style.display er ikke et objekt, så man kan ikke gøre det på den måde, som strandløven viste her sidst ...

Man er nødt til:

  obj = document.getElementById(elm).style;
  obj.display = (obj.display == "none") ? "block" :"none";
Avatar billede donslund Nybegynder
27. maj 2004 - 12:44 #13
Her er koden:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
    <TITLE>pictest</TITLE>
    <script type="text/javascript">
var x=y=0,ie=(document.all)?1:0;

function hvorermusen(f,e){
q = document.forms.kord
e = getPos(e)

if(ie){
  y  = f.clientY + document.body.scrollTop-(e.y+2);
  x = f.clientX + document.body.scrollLeft-(e.x+2)}
else{
  y = f.pageY-e.y;
  x = f.pageX-e.x;}
  q.corx.value = x;
  q.cory.value = y;

}
function getPos(elm) {
for (zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
  return {x:zx,y:zy}
}
function set_x() {
    document.getElementById("x").style.visibility = 'visible';
    document.getElementById("x").style.position = 'absolute';
    document.getElementById("x").style.left = parseInt(document.kord.corx.value) + 97;
    document.getElementById("x").style.top = parseInt(document.kord.cory.value) + 96;
    document.getElementById("menuDIV").style.visibility = 'hidden';
}
function set_o() {
    document.getElementById("o").style.visibility = 'visible';
    document.getElementById("o").style.position = 'absolute';
    document.getElementById("o").style.left = parseInt(document.kord.corx.value) + 97;
    document.getElementById("o").style.top = parseInt(document.kord.cory.value) + 96;
    document.getElementById("menuDIV").style.visibility = 'hidden';
}
function showhide(elm) {
    elm.style.display = (elm.style.display == "none") ? "block" :"none";
  document.getElementById("menuDIV").style.position = 'absolute';
    document.getElementById("menuDIV").style.left = parseInt(document.kord.corx.value) + 100;
  document.getElementById("menuDIV").style.top = parseInt(document.kord.cory.value) + 100;
}


</script>


</HEAD>
<BODY>

<img src="grafik/mand.gif" onclick="hvorermusen(event,this); showhide(document.getElementById('menuDiv'));" style="position:absolute;top:100px;left:100px;">

<form name="kord">
x: <input type="text" name="corx">
y: <input type="text" name="cory">
</form>
<IMG SRC="grafik/x.gif" BORDER="0" WIDTH="7" HEIGHT="9" ALT="" name="x">
<IMG SRC="grafik/o.gif" BORDER="0" WIDTH="7" HEIGHT="9" ALT="" name="o">

<div id="menuDiv" style="display:none;">
<table border="0" style="width:75px; background-color:#ffffff; border: 1px solid #666666;" bgcolor="#ffffff" cellspacing="0" cellpadding="0"><tr><td>
<a href="#" onclick="set_x(this);">Foran</a><br />
</td></tr>
<tr><td>
<a href="#" onclick="set_o(this);">Bagp&aring;</a>
</td></tr>
</table>
</div>
</BODY>
</HTML>
Avatar billede skovenborg Nybegynder
27. maj 2004 - 22:56 #14
du har skrevet menuDIV i din set_x og set_o funktion - det skal være menuDiv istedet.

For det andet skal du ændre name="x" og name="o" til id="x" og id="o" for at få de to forgående funktioner til at virke helt.

Desuden smider ud this ind som argument, men bruger det ikke - så den kan du jo også slette.
Avatar billede skovenborg Nybegynder
27. maj 2004 - 22:59 #15
til sidst ændrer du i set_x og set_o visibility på menuen - hvilket resulterer i at din menu ikke kan åbnes igen (da showhide ikke ændrer på dens visibility). Så enten skal du også ændre showhide til at bruge visibility i stedet, ellers skal du i set_x og set_o skrive:
document.getElementById("menuDiv").style.display = "none";
Avatar billede donslund Nybegynder
28. maj 2004 - 10:27 #16
Det virker jo fint nu. Tak for hjælpen.
Næste projekt er, at billede-filerne x og o skal kunne kopieres. Men det roder jeg lige selv lidt med.
Smider du et svar, skovenborg?
Avatar billede skovenborg Nybegynder
28. maj 2004 - 11:11 #17
joda - here you go :-)
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