Avatar billede neddev Nybegynder
18. september 2000 - 13:37 Der er 8 kommentarer og
1 løsning

Hjælp til en fed menu

Jeg har lavet en menu der forholdsvis viser og skjuler layers ved at angive \'show\' og \'hide\', men jeg vil lave den om til at hvise når man skriver \'show\' ellers er det skjult.

Her er koden:

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style)
    { obj=obj.style; v=(v==\'show\')?\'visible\':(v=\'hide\')?\'hidden\':v; }
    obj.visibility=v; }
Avatar billede jumper Nybegynder
18. september 2000 - 13:40 #1
Den skal gøre hvad?!?

/Thor
Avatar billede neddev Nybegynder
18. september 2000 - 14:21 #2
Det den skal er at hvise kun det man angiver, og den skal skjule alt andet automatisk, uden at angive hver enkelte der skal skjules.
Avatar billede olebole Juniormester
18. september 2000 - 14:23 #3
<ole>
Så skal du starte med at skrive den rigtigt. Du mangler en \'  } \' helt til sidst.
Desuden skal du bruge en funktion, der kan oprette objekter udfra dine lag. Den hedder MM_findObj() - og ser således ud:

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf(\"?\"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

Derudover må jeg tilslutte mig Thors spørgsmål  ;o)
/mvh
</bole>
Avatar billede neddev Nybegynder
18. september 2000 - 14:28 #4
Alt er lavet i virkeligheden ser den såden ud og den vireker, jeg skal bare lave den om.
<script language=\"JavaScript\">
<!--

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf(\"?\"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style)
    { obj=obj.style; v=(v==\'show\')?\'visible\':(v=\'hide\')?\'hidden\':v; }
    obj.visibility=v; }
}
//-->
</script>

Avatar billede olebole Juniormester
18. september 2000 - 14:31 #5
Det er meget, meget flot...men hvad vil du?
Avatar billede neddev Nybegynder
18. september 2000 - 14:38 #6
Jeg skal lige formulere mig rigtigt!

Du ved, man skriver ..onMouseOver=\"MM_showHideLayers(\'layer1\',\'\',\'show\',\'layer2\',\'\',\'hide\'........)\"..Det jeg vil have den til er at den gøre det samme men kun skrive ...(\'layer1\',\'\',\'show\').. og alle den der skal skjules bliver skjult uden at angive hvilke.
Avatar billede olebole Juniormester
18. september 2000 - 14:55 #7
OK...meget bedre ;o)
Så kan du lave en \'for\' løkke på denne måde:

var numDiv = 5; // Antallet af <div>\'s
function myShow(which) {
    for (i=0; i<numDiv; i++) {
        MM_showHideLayers(\'layer\'+(i+1),\'\',\'hide\')
    }
    MM_showHideLayers(which,\'\',\'show\')
}

...som du så bare kalder med:
    <a href=\"#\" onmouseover=\"myShow(\'layer1\');\">Vis Layer1</a>

Og så skal du selvfølgelig stadig bruge de to andre funktioner.
/mvh
Avatar billede neddev Nybegynder
18. september 2000 - 15:06 #8
Den er der næsten, så skal den bare gemme dem oven over også, nu gemmer den ned ad, den skal gemme oppe også.
Avatar billede olebole Juniormester
18. september 2000 - 15:11 #9
Nej, den gemmer alle lagene fra \'layer1\' op til det antal, du har - og tænder derefter det ene lag, du har bedt den om.
/mvh
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