Avatar billede peterlang Nybegynder
12. november 2004 - 13:19 Der er 4 kommentarer

Hjælp til Pop-up Menu

Jeg har to problemer:

1/ Jeg kan ikke få "menu 2" frem.

2/ Jeg vil heller have at menuen kommer frem når man køre musen over tabel-cellen "Overskrift X" (skift farve) istedet for et billede.



Håber en kan hjælpe.

--------------------------------
<html><head>

<style>
a:link{color: #ffffff;text-decoration: none;}
a:visited{color: #ffffff;text-decoration: none;}
a:active{color: #FFCCFF;text-decoration: underline;}
a:hover{color: #FFCC00;text-decoration: underline;}
</style>

<script>
luk = false;
aaben = true
ns4 = (document.layers)? true:false
ie4 = (document.all && !document.getElementById)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;
clicked = false;

function yPos(what){var picY = getY(document.images[what]);return picY;}
function xPos(what){var picX = getX(document.images[what]);return picX;}
function getY(obj) {if (obj == document.body) {return obj.offsetTop} else {return obj.offsetTop + getY(obj.offsetParent);}}
function getX(obj) {if (obj == document.body) {return obj.offsetLeft} else {return obj.offsetLeft + getX(obj.offsetParent);}}

function ud(nr){var styleObj = (ns4)? document.layers['mm'+nr] : (ie4)? document.all['mm'+nr].style : document.getElementById('mm'+nr).style;styleObj.visibility="hidden";}


function showSel(nr) {thisSel=document.getElementById('mm'+nr);
if (thisSel.style.visibility=="hidden") {selL = xPos('over'+nr);selT=yPos('over'+nr);thisSel.style.left=selL+0;thisSel.style.top=selT+21;thisSel.style.visibility="visible";}}

</script>
</head>

<body>
<br><br>

<ul><span id="lukalt" onmouseover="aaben=true;showSel(1);" onmouseout="ud(1);">
<table border=1>

<tr><td><b>Overskrift 1</b></td><td><b>Overskrift 2</b></td><td><b>Overskrift 3</b></td></tr>
<tr><td>


<img type="image" src="sel1.gif" id="over1" width="136" height="21" onclick="aaben=true" onmousedown="showSel(1);">
<div id="mm1" style="position:absolute;visibility:hidden;" onmouseout="if(luk!=false){ud(1)}" onblur="ud(1);" onmouseover="aaben=false" >
<table bgcolor=yellow><tr><td>MENU-1</td></tr></table>
</div>

</td><td>
<img type="image" src="sel2.gif" id="over2" width="136" height="21" onclick="aaben=true" onmousedown="showSel(2);">
<div id="mm2" style="position:absolute;visibility:hidden;" onmouseout="if(luk!=false){ud(2)}" onblur="ud(2);" onmouseover="aaben=false" >
<table bgcolor=yellow><tr><td>MENU-2</td></tr></table>
</div>
</td>

<td>sadsadsad</td><td></tr>
</table></span></ul>

</body>
</html>
Avatar billede skovenborg Nybegynder
12. november 2004 - 19:08 #1
Det den her sætning som skaber de problemmer:
<span id="lukalt" onmouseover="aaben=true;showSel(1);" onmouseout="ud(1);">
Den viser jo hele tiden menu1, og gør det over hele tabellen. I stedet kunne du slette det og istedet skrive:
<tr><td onmouseover="aaben=true;showSel(1);" onmouseout="ud(1);"><b>Overskrift 1</b></td><td onmouseover="aaben=true;showSel(2);" onmouseout="ud(2);"><b>Overskrift 2</b></td><td><b>Overskrift 3</b></td></tr>

Herudover kan du vel godt slette:
onclick="aaben=true" onmousedown="showSel(1);" og
onclick="aaben=true" onmousedown="showSel(2);"
på de to billeder (i grunden kan du godt helt fjerne billederne hvis du ikke vil have dem).
Til sidst skal du nok lige rykke de to menuer lidt op for at de skal kunne passe.
Avatar billede skovenborg Nybegynder
12. november 2004 - 19:13 #2
evt. kunne du ordne det på denne måde:
<table border=1>

<tr><td onmouseover="aaben=true;showSel(1);" onmouseout="ud(1);"><b>Overskrift 1</b></td><td onmouseover="aaben=true;showSel(2);" onmouseout="ud(2);"><b>Overskrift 2</b></td><td><b>Overskrift 3</b></td></tr>
<tr><td>


<img type="image" src="sel1.gif" id="over1" width="136" height="21">
<div id="mm1" style="position:absolute;margin-top:-30px;visibility:hidden;" onmouseout="ud(1)" onmouseover="aaben=false;showSel(1);" >
<table bgcolor=yellow><tr><td>MENU-1</td></tr></table>
</div>

</td><td>
<img type="image" src="sel2.gif" id="over2" width="136" height="21">
<div id="mm2" style="position:absolute;margin-top:-30px;visibility:hidden;" onmouseout="ud(2)" onmouseover="aaben=false;showSel(2);" >
<table bgcolor=yellow><tr><td>MENU-2</td></tr></table>
</div>
</td>
Avatar billede peterlang Nybegynder
14. november 2004 - 14:45 #3
Tak for svaret..

Nu har jeg arbejde en del videre med menu'en, og den virker nu.

Men jeg vil gerne have min menu så crossbrowser kompatibel så muligt.
så er der noget der kan skrives bedre?

-----------------------------------------------------------
<html><head>

<script>
luk = false;
aaben = true

ns4 = (document.layers)? true:false
ie4 = (document.all && !document.getElementById)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function yPos(what){var picY = getY(document.images[what]);return picY;}
function xPos(what){var picX = getX(document.images[what]);return picX;}
function getY(obj) {if (obj==document.body) {return obj.offsetTop} else {return obj.offsetTop+getY(obj.offsetParent);}}
function getX(obj) {if (obj==document.body) {return obj.offsetLeft} else {return obj.offsetLeft+getX(obj.offsetParent);}}

function lukm(id){var styleObj=(ns4)? document.layers["mm"+id]:(ie4)? document.all["mm"+id].style:document.getElementById("mm"+id).style;styleObj.visibility="hidden";}

function vism(nr){
thisSel=document.getElementById("mm"+nr);
if (thisSel.style.visibility=="hidden") {
selL=xPos("selPic"+nr);selT=yPos("selPic"+nr);
thisSel.style.left=selL+0;thisSel.style.top=selT+21;
thisSel.style.visibility="visible";} else {thisSel.style.visibility="hidden";}}

</script>
</head>

<body>
<br><br>
<ul><table border=0 cellSpacing=0 cellPadding=0 bgcolor=#eeeeee><tr>

<td><span id='visluk1' onmouseover='aaben=true;vism(1)' onmouseout='lukm(1)'>
<a href='#'><img type="image" border=0 src="mmm1.gif" id="selPic1" width="136" height="21" ></a>
<div id="mm1" style="position:absolute;visibility:hidden;">
<table bgcolor=yellow width=120><tr><td>
<a href="#">hej 1</a><br>
<a href="#">hej 2</a><br>
</td></tr></table>
</div></span></td>

<td><span id='visluk2' onmouseover='aaben=true;vism(2)' onmouseout='lukm(2)'>
<a href='java script:void(0)'><img type="image" border=0 src="mmm2.gif" id="selPic2" width="136" height="21"></a>
<div id="mm2" style="position:absolute;visibility:hidden;">
<table bgcolor=yellow width=120><tr><td>
<a href="#">hej 1</a><br>
<a href="#">hej 2</a><br>
</td></tr></table>
</div></span>

</td></tr></table>
</ul>

</body></html>
Avatar billede skovenborg Nybegynder
16. november 2004 - 01:09 #4
tjaa, vism-funktionen er vist ikke helt så kombitabel som de andre - nu tækner jeg på document.getElementById, som du alle andre steder tester for, men ikke her.

Det ville dog være meget lettere i dit tilfælde blot at lave en generelt funktion for at hente det style-objekt du skal bruge:
function getStyleObject(elmId) {
    if (document.getElementById) {return document.getElementById(elmId).style;}
    else if (document.all) {return document.all[elmId].style;}
    else if (document.layers) {return document.layers[elmId];}
    else {return null;}
}

Og så omformulerer vi lidt i dit script:
<script>
function getStyleObject(elmId) {
    if (document.getElementById) {return document.getElementById(elmId).style;}
    else if (document.all) {return document.all[elmId].style;}
    else if (document.layers) {return document.layers[elmId];}
    else {return null;}
}
luk = false;
aaben = true

function yPos(what){var picY = getY(document.images[what]);return picY;}
function xPos(what){var picX = getX(document.images[what]);return picX;}
function getY(obj) {if (obj==document.body) {return obj.offsetTop} else {return obj.offsetTop+getY(obj.offsetParent);}}
function getX(obj) {if (obj==document.body) {return obj.offsetLeft} else {return obj.offsetLeft+getX(obj.offsetParent);}}

function lukm(id){var styleObj=getStyleObject("mm"+id);if (styleObj) {styleObj.visibility="hidden";}}

function vism(nr){
thisSel=getStyleObject("mm"+nr);
if (thisSel) {
if (thisSel.visibility=="hidden") {
selL=xPos("selPic"+nr);selT=yPos("selPic"+nr);
thisSel.left=selL+0;thisSel.style.top=selT+21;
thisSel.visibility="visible";} else {thisSel.visibility="hidden";}}
}

</script>
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