Avatar billede whatever Nybegynder
11. september 2001 - 20:38 Der er 8 kommentarer og
1 løsning

Show/hide layer

Hej

Jeg har et lille problem. Når jeg kalder funktionen showLayer, bliver indholdet af variablen n ikke ført med over i funktionen show_hide_layers. Hvem kan fikse det?


function show_hide_layers() {
    var i, visStr, args, theObj;
    args = show_hide_layers.arguments;
   
    for (i = 0; i < (args.length - 3); i += 4 ) {
        visStr = args[i+3];
        if ( (navigator.appName == \'Netscape\') && (document.layers != null) ) {
            theObj = eval(args[i]);
            if (theObj){ theObj.visibility = visStr; }
        } else if ( document.all != null ) {
            if (visStr == \'show\') { visStr = \'visible\'; }
            if (visStr == \'hide\') { visStr = \'hidden\'; }
            theObj = eval(args[i+1]);
            if (theObj) { theObj.style.visibility = visStr; }
        } else {
            if (visStr == \'show\') visStr = \'visible\';
            if (visStr == \'hide\') visStr = \'hidden\';
            theObj = eval(args[i+2]);
            if (theObj) theObj.style.visibility = visStr;
        }
    }
}

function showLayer(n) {
  show_hide_layers(\'document.layers[n]\',\'document.all[n]\',\'document.getElementById(n)\',\'show\'
                    );
}

function hideAllLayers() {
  show_hide_layers(\'document.layers[\\\'layer1\\\']\',\'document.all[\\\'layer1\\\']\',\'document.getElementById(\\\'layer1\\\')\',\'hide\',
                      \'document.layers[\\\'layer2\\\']\',\'document.all[\\\'layer2\\\']\',\'document.getElementById(\\\'layer2\\\')\',\'hide\'
                    );
}
Avatar billede jakoba Nybegynder
11. september 2001 - 20:57 #1
Såvidt jeg kan se er  n  lagets navn så du kan bare pille den ud af de lag du får;

function show_hide_layers() {
    var i, visStr, args, theObj;
    var n:
    args = show_hide_layers.arguments;
 
    for (i = 0; i < (args.length - 3); i += 4 ) {
        visStr = args[i+3];
        if ( (navigator.appName == \'Netscape\') && (document.layers != null) ) {
            theObj = eval(args[i]);
      n = theObj.name;
            if (theObj){ theObj.visibility = visStr; }
        } else if ( document.all != null ) {
            if (visStr == \'show\') { visStr = \'visible\'; }
            if (visStr == \'hide\') { visStr = \'hidden\'; }
            theObj = eval(args[i+1]);
      n = theObj.name;
            if (theObj) { theObj.style.visibility = visStr; }
        } else {
            if (visStr == \'show\') visStr = \'visible\';
            if (visStr == \'hide\') visStr = \'hidden\';
            theObj = eval(args[i+2]);
      n = theObj.id;
            if (theObj) theObj.style.visibility = visStr;
        }
    }
}

men hvorfor vil du have den over? Den bliver jo ikke brugt til noget.

mvh JakobA
Avatar billede jakoba Nybegynder
11. september 2001 - 21:10 #2
Pjat, nu fatter jeg komikken. Sorry

Nej de funktioner duer ikke medmindre  n  ankommer på en eller anden måde.
Nedenfor laver jeg en lille ekstra funktion til at finde det lag

function show_hide_layers() {
    var i, visStr, args, theObj;
    args = show_hide_layers.arguments;
 
    for (i = 0; i < (args.length - 3); i += 2 ) {
        theObj = args[i];
        visStr = args[i+1];
        if ( (navigator.appName == \'Netscape\') && (document.layers != null) ) {
            if (theObj){ theObj.visibility = visStr; }
        } else if ( document.all != null ) {
            if (visStr == \'show\') { visStr = \'visible\'; }
            if (visStr == \'hide\') { visStr = \'hidden\'; }
            if (theObj) { theObj.style.visibility = visStr; }
        } else {
            if (visStr == \'show\') visStr = \'visible\';
            if (visStr == \'hide\') visStr = \'hidden\';
            if (theObj) theObj.style.visibility = visStr;
        }
    }
}

function findLag( navn ) {
    if (document.layers) return document.layers[navn];
    if ( document.all )  return document.all[navn];
    return document.getElementById(navn);
}; //end findLag( string )

function showLayer(n) {
  show_hide_layers( findlag(n), \'show\' );
}

function hideAllLayers() {
  show_hide_layers(findLag(\'layer1\'),\'hide\',
                  findLag(\'layer2\'],\'hide\'
                    );
}

mvh JakobA
Avatar billede jakoba Nybegynder
11. september 2001 - 21:11 #3
Ups. glemte stort L i findLag(n) i funktionen showLayer
    show_hide_layers( findLag(n), \'show\' );
Avatar billede whatever Nybegynder
11. september 2001 - 21:58 #4
Har du fået det til at virke? Jeg kan sk* ikke lige få den til at gemme og vise lag.
Jeg har rettet fejlen i hideAllLayers(). Der står findLag(\'layer2\'].
Avatar billede jakoba Nybegynder
11. september 2001 - 22:06 #5
Det er osse totalt utestet. Jeg er for doven til at finde på en masse layers osv.
Har du et link til en fil jeg kan grabbe og lege med?

mvh JakobA
Avatar billede whatever Nybegynder
11. september 2001 - 22:08 #6
Du kan lege lidt med:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
    <title>Untitled</title>
    <script language=\"JavaScript\" src=\"showhide.js\"></script>
</head>

<body>

<div id=\"layer1\" style=\"position:absolute; left:100; top:200; width:150; height:125; z-index:1; background-color: #CCCCCC; layer-background-color: #CCCCCC; border: 1px none #000000; visibility: hidden\"></div>

<div id=\"layer2\" style=\"position:absolute; left:350; top:200; width:150; height:125; z-index:1; background-color: #EEEEEE; layer-background-color: #CCCCCC; border: 1px none #000000; visibility: hidden\"></div>

<a href=\"java script:showLayer(\'layer1\')\">Vis layer1</a><br />
<a href=\"java script:sshowLayer(\'layer2\')\">Vis layer2</a><br />
<a href=\"java script:hideAllLayers()\">Gem alle</a><br />

</body>
</html>
Avatar billede jakoba Nybegynder
11. september 2001 - 22:30 #7
OK. det var den ) diu fandt, det L jeg snakkede om og så testen ( i < (args.length - 3) ) i funktionen show_hide_layers()\'s for løkke hvor 3 skulle ændres til 1.

http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp108487.html

mvh JakobA
Avatar billede whatever Nybegynder
11. september 2001 - 22:36 #8
Det virker sku. Tak for hjælpen.
Avatar billede jakoba Nybegynder
11. september 2001 - 22:43 #9
takker
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