Avatar billede azs Nybegynder
16. maj 2001 - 09:55 Der er 20 kommentarer og
1 løsning

DropDown Menu

Jeg fandt denne menu!
http://www.viewsource.dk/dhtmldwl.asp?ID=56

Men den virker ikke rigtigt som jeg vil!

Er der nogen som kan få \"menuX\" layerne til at komme lige under hvor man flytter musen ind?

Det er fordi jeg gerne vil havde menuen center!
Avatar billede jakoba Nybegynder
16. maj 2001 - 22:59 #1
du skal rette i dine 3 kald til funktionen activateMenu( nr, offset ).
du skal have indstillet anden parameter så den passer.
lav en lille funktion i head:

<script language=\'javascript\'>

var startpos = -150;  // disse 2 værdier skal justeres alt efter hvormange menuer
var prbredde =  75;  // du har og hvor brede de bliver.

function menuPos ( nr ) {
  var bredde = ( isNS ? window.innerWidth : document.body.clientWidth );
  mpos = bredde/2 +startpos +nr*prbredde;
  return Math.round( mpos )
}; //end menuPos ( nummer ) -> integer

</script>

dine kald til  activateMenu  omskrives så til  activatemenu( 1, menuPos(1) )  ligesom jeg har gjort det i de 3 kald nedenfor:

<td width=\"75\">
<a href=\"java script:popUp(\'http://www.viewsource.dk/default.asp\', \'menu1\', 300, 300)\" onmouseover=\"activateMenu(1,menuPos(1))\" ><img src=\"menu1.GIF\" width=\"75\" height=\"25\" border=0></A>
</td>

<td width=\"75\">
<a href=\"java script:popUp(\'#\', \'menu2\', 300, 300)\" onmouseover=\"activateMenu(2,menuPos(2))\" ><img src=\"menu2.GIF\" width=\"75\" height=\"25\" border=0></A>
</td>

<td WIDTH=\"75\">
<a href=\"java script:popUp(\'Dynamicmenu1.htm\', \'menu2\', 300, 300)\" onmouseover=\"activateMenu(3,menuPos(3))\" ><img src=\"menu3.GIF\" width=\"75\" height=\"25\" border=0></A>
</td>

mvh JakobA
Avatar billede azs Nybegynder
17. maj 2001 - 08:36 #2
Det virker ikke sådan som det skal !

Hvis man har sat menu\'en ind i en tabel og så centreret tabellen, så skal draopdown menu kommer neden under hvor man fører musen!

Hvis man så maksimerer vinduet (hvis det ikke er gendannet) så vil dropdown menu\'en ikke komme lige neden under selve menu\'en!
Avatar billede jakoba Nybegynder
17. maj 2001 - 09:52 #3
den vandrette centrering er OK nu ikke?
så det kun er lodret der mangler at blive rettet til?
Avatar billede azs Nybegynder
17. maj 2001 - 10:42 #4
vaar !?!?!?!?

Du forstår hvist ikke!!!!!!!!

Den skal kunne passe til alle opløsninger!!!!!

Det den gør nu er at den sættre nogle faste positioner for hvor dropdown menuerne skal komme frem, og det passer så ikke når man ser den i andre opløsninger :(
Avatar billede jakoba Nybegynder
17. maj 2001 - 13:44 #5
ok så må vi gøre det på den hårde måde:

i de 3 td-er hvor vi ændrede før ændrer vi igen. hvet billede får en name= parameter og værdien i den name= parameter bruges som anden parameter i kaldet til activateMenu funktionen


<td width=\"75\">
<a href=\"java script:popUp(\'http://www.viewsource.dk/default.asp\', \'menu1\', 300, 300)\" onmouseover=\"activateMenu(1,\'m1img\')\" ><img name=\'m1img\' src=\"menu1.GIF\" width=\"75\" height=\"25\" border=0></A>
</td>

<td width=\"75\">
<a href=\"java script:popUp(\'#\', \'menu2\', 300, 300)\" onmouseover=\"activateMenu(2,\'m2img\')\" ><img name=\'m2img\' src=\"menu2.GIF\" width=\"75\" height=\"25\" border=0></A>
</td>

<td WIDTH=\"75\">
<a href=\"java script:popUp(\'Dynamicmenu1.htm\', \'menu2\', 300, 300)\" onmouseover=\"activateMenu(3,\'m3img\')\" ><img name=\'m3img\' src=\"menu3.GIF\" width=\"75\" height=\"25\" border=0></A>
</td>


oppe i scriptet, ændrer vi activatemenu funktionen til:


function activateMenu(menuLayerRef, navn) {
   
    if (isDynamic && activeMenu != menuLayerRef) {

        if (activeMenu) hideMenu(\"menu\" + activeMenu);
           
        menuID = \"menu\" + menuLayerRef;
        activeMenu = menuLayerRef;
   
        var elm = document.images[navn];
        var rd = { x:0 ,y:0 };
        if ( document.layers ) {  // NS4.0 - NS4.7
            rd.x = elm.x;
            rd.y = elm.y;
        } else {                  // IE og NS6
            do {    rd.x += parseInt( elm.offsetLeft );
                rd.y += parseInt( elm.offsetTop );
                elm = elm.offsetParent;
            } while ( elm );
        };

        if (isNS) {
            document[menuID].top = 21+rd.x;
            document[menuID].left = 5+rd.y;
        } else {
            document.all[menuID].style.pixelTop = 25+rdx;
            document.all[menuID].style.pixelLeft = 5+rd.y;
        }

        showMenu(menuID)
    }
};

nu bliver dropdown lagene placeret under de billeder der ligger i menu-bjælken, uanset hvor du gør af dem.
Du må do selv sørge for at der er plad til lagene nedenunder :)

mvh JakobA
Avatar billede dusker Nybegynder
17. maj 2001 - 16:47 #6
hmm.. det duer ikke ved mig.. den klager over at rdx ikke er defineret ?
Avatar billede jakoba Nybegynder
17. maj 2001 - 17:33 #7
du har glemt punktum mellem rd og x (eller rettere: jeg har) i linien:

            document.all[menuID].style.pixelTop = 25+rdx;
der skal stå:
            document.all[menuID].style.pixelTop = 25+rd.x;
Avatar billede dusker Nybegynder
18. maj 2001 - 11:58 #8
nu er der ingen fejl.. men der kommer heller ingen menu
Avatar billede dusker Nybegynder
18. maj 2001 - 18:34 #9
alså... man holder musen over billederne men der kommer ingen menu frem...
Avatar billede azs Nybegynder
19. maj 2001 - 13:49 #10
Der kommer heller ingen menu ned ved mig!
Avatar billede azs Nybegynder
19. maj 2001 - 13:50 #11
Der kommer heller ingen menu ned ved mig nu!
Avatar billede azs Nybegynder
19. maj 2001 - 13:50 #12
hmm =)
Avatar billede jakoba Nybegynder
20. maj 2001 - 00:00 #13
Sært. Det virker fint for mig:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp73123.html

bortset fra at jeg haved byttet x og y i positioneringen. det skal være:

        if (isNS) {
            document[menuID].top = 25+rd.y;
            document[menuID].left = 5+rd.x;
        } else {
            document.all[menuID].style.pixelTop = 25+rd.y;
            document.all[menuID].style.pixelLeft = 5+rd.x;
        }

mvh JakobA
Avatar billede azs Nybegynder
20. maj 2001 - 12:40 #14
kan det være fordi vi har tage TopDynamicmenu2.htm menu\'en. Det som går ind af sig selv? For det var nu den jeg mente! Men det skulle jeg nok havde skrevet!

Kan du ikke prøve at se om det er derfor?
Avatar billede jakoba Nybegynder
20. maj 2001 - 20:12 #15
der hvor der skrives en onMouseover event ind i <div-en? det skulle være nok blot at ændre parametrene i den event\'s kald til activateMenu() ligesom de er ændret i tabellen.
dvs:
document.write(\"<DIV id=menu1 class=menu onMouseover=activateMenu(1,108);><A href=\\\"admin.asp\\\">Forsiden</A></DIV>\");
bliver til:
document.write(\"<DIV id=menu1 class=menu onMouseover=activateMenu(1,\"m1menu\");><A href=\\\"admin.asp\\\">Forsiden</A></DIV>\");

Avatar billede jakoba Nybegynder
20. maj 2001 - 20:16 #16
Ups. citationstegnene omkring navnet skal escapes.
Avatar billede azs Nybegynder
20. maj 2001 - 20:57 #17
Det virker stadig ikke og jeg havde nu gjort det der i OnMusOver i <div-en!

Ups. citationstegnene omkring navnet skal escapes. <-- eHH var ??
Avatar billede jakoba Nybegynder
20. maj 2001 - 21:00 #18
Avatar billede azs Nybegynder
20. maj 2001 - 21:25 #19
Så nu virker det helt som det skal !

Du får lige lidt flere point!
Avatar billede azs Nybegynder
20. maj 2001 - 21:32 #20
Kan man ikk give flere point nu?

Mærkeligt!
Avatar billede jakoba Nybegynder
20. maj 2001 - 21:55 #21
det er ok. samme svar giver 60 extra i spgm 74098 :-))
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