Avatar billede SnowmanDK Nybegynder
08. december 2008 - 09:10 Der er 6 kommentarer og
1 løsning

Vise/skjule div ved hjælp af div knap

Jeg prøver på at vise 7 foskellige div's ÉN ad gangen, der som standard er skjult, men jeg får ikke så meget som en fejlmeddelse.
Alle mine css hedder noget med "xxxLayer" ("xxx" er fornavn).

Her er et udklip fra min kode. Hvad er der galt?:

<script type="text/javascript">
var oldElm = null;
function Show(id){
  if(oldElm)
    oldElm.display = "none";
  oldElm = document.getElementById(id).style;
  oldElm.display = "block";
}
</script>
<style type="text/css">
<!--
#NewsLayer {
    position:relative;
    left:0px;
    top:0px;
    width:682px;
    height:566px;
    z-index:1;
    overflow: auto;
    display: none;
}
-->
</style>


Knapperne selv er kodet som her:

<div onclick="Show(NewsLayer)" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('News','','gfx/MenuNewsOn.png',1)"><img src="gfx/MenuNewsOff.png" name="News" width="201" height="25" border="0" id="News" /></div>

Nogen idéer til at få det til at virke?
Avatar billede olebole Juniormester
08. december 2008 - 09:59 #1
<ole>

Hvis ikke du får en fejlmeddelelse med dén kode, så slå fejlmeddelelser til i din browser  ;o)
    <div onclick="Show('NewsLayer')" ......

/mvh
</bole>
Avatar billede mireigi Novice
08. december 2008 - 10:02 #2
Hej snowmandk,

prøv at erstatte
    onclick="Show(NewsLayer)"
med
    onclick="Show('NewsLayer')"


MiReiGi
Avatar billede SnowmanDK Nybegynder
08. december 2008 - 16:38 #3
Ups... Glemte det med fejlmeddelelser i min browser :)

Interessant...
Jeg prøvede så med at skrive 'NewsLayer' i anførselstegnene,
men får fejl i den linie her:

  oldElm.display = "none";

Error: Object required

Det er endda kode her fra, som er blevet beskrevet som værende god.
Jeg kæmper lige lidt videre, nu jeg har den... ehm... fejlkode-ting-tang aktiveret :)
Avatar billede SnowmanDK Nybegynder
08. december 2008 - 16:39 #4
looool

Nu får jeg fejl på Expertens system:

Line 1
Error: Invalid character

Hmm...
Avatar billede SnowmanDK Nybegynder
08. december 2008 - 17:15 #5
Ahaaa...

Jeg har skiftet denne kode ud:

<script type="text/javascript">
var oldElm = null;
function Show(id){
  if(oldElm)
    oldElm.display = "none";
  oldElm = document.getElementById(id).style;
  oldElm.display = "block";
}
</script>


Med denne her:

<script type="text/javascript">
function Show(id){
    if (id.style.display == "none")
        id.style.display = "block";
    else
        id.style.display = "none";
}
</script>


Nu er der ingen fejl overhovedet, og det virker.
MEN... Hvordan får jeg den til at deaktive (display.none) alle de andre layers på nemmeste måde? Det skal også være sådan at når jeg klikker på samme knap 2 gange, skal det layer den aktiverer, DEaktiveres sammen med alle de andre.

At slå det ene layer til/fra er ikke noget problem alene:

    if (id.style.display == "none")
        id.style.display = "block";
    else
        id.style.display = "none";

men at få det til at virke sammen med at deaktivere alle andre?
Avatar billede mireigi Novice
08. december 2008 - 18:27 #6
Dette script kan gøre det du leder efter :)

<html>
<head>
<script language="javascript" type="text/javascript">

    var lastDiv = "";
    function disableDivs(id)
    {
        var div = document.getElementsByTagName("div");
        if (lastDiv == id)
        {
            for (var i = 0; i < div.length; i++)
            {
            if (div[i].getAttribute("title") == "dynDivs")
                div[i].style.display = "none";
            }
        }
        else
        {
            for (var i = 0; i < div.length; i++)
            {
                if (div[i].id != id && div[i].getAttribute("title") == "dynDivs")
                    div[i].style.display = "none";
                else if (div[i].getAttribute("title") == "dynDivs")
                    div[i].style.display = "block";
            }
        }
        lastDiv = id;
    }

</script>
</head>
<body>

<div title="dynDivs" id="div1">Dette er DIV 1</div>
<div title="dynDivs" id="div2">Dette er DIV 2</div>
<div title="dynDivs" id="div3">Dette er DIV 3</div>
<div title="dynDivs" id="div4">Dette er DIV 4</div>
<div title="dynDivs" id="div5">Dette er DIV 5</div>
<input type="button" value="Div 1" onclick="java script:disableDivs('div1')" /><br />
<input type="button" value="Div 2" onclick="java script:disableDivs('div2')" /><br />
<input type="button" value="Div 3" onclick="java script:disableDivs('div3')" /><br />
<input type="button" value="Div 4" onclick="java script:disableDivs('div4')" /><br />
<input type="button" value="Div 5" onclick="java script:disableDivs('div5')" />

</body>
</html>
Avatar billede SnowmanDK Nybegynder
27. februar 2009 - 19:59 #7
Der kom aldrig et svar jeg kunne give points så denne tråd lukkes her.
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

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