Avatar billede Slettet bruger
26. juli 2011 - 18:48 Der er 5 kommentarer

To toggle funktioner på en side

Hej eksperter,

Hvordan undgår jeg at de to toggle funktioner reset'er hinanden. Så et klik som kalder den ene toggle funktion ophæver et tidligere valg? Jeg vil gerne have at de to toggle funktioner fungere uafhængigt af hinanden. Jeg har ikke tidligere forsøgt mig med Javascript så jeg er newb hvad det angår.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>CCP</title>

<script type="text/javascript">
function ToggleMe1(boxid) {
    var boxes = document.getElementsByTagName("div");
    for(var i=0; i<boxes.length; i++) {
        name = boxes[i].getAttribute("name");
        if (name == boxes[i].id.substr(0,4)) {
            if (boxes[i].id == boxid) {
                boxes[i].style.display = 'block';
            } else {
                boxes[i].style.display = 'none';
            }
        }
    }
    return true;
}
function ToggleMe2(boxid) {
    var boxes = document.getElementsByTagName("div");
    for(var i=0; i<boxes.length; i++) {
        name = boxes[i].getAttribute("name");
        if (name == boxes[i].id.substr(0,4)) {
            if (boxes[i].id == boxid) {
                boxes[i].style.display = 'block';
            } else {
                boxes[i].style.display = 'none';
            }
        }
    }
    return true;
}
</script>

</head>

<body>
<div>
    <img src="Images/p1.png" onclick="return ToggleMe1('para1')" />
    <img src="Images/p2.png" onclick="return ToggleMe1('para2')" />
    <img src="Images/p3.png" onclick="return ToggleMe1('para3')" />
    <img src="Images/p4.png" onclick="return ToggleMe1('para4')" />

<div name="para" id="para1" style="display:none">
<p>This is the information about Change Initiation.</p>
</div>

<div name="para" id="para2" style="display:none">
<p>This is the information about Change Handling.</p>
</div>

<div name="para" id="para3" style="display:none">
<p>This is the information about Change Implementation.</p>
</div>

<div name="para" id="para4" style="display:none">
<p>This is the information about Change Closure.</p>
</div>

</div>

<div>
    <img src="Images/p1.png" onclick="return ToggleMe2('fara1')" />
    <img src="Images/p2.png" onclick="return ToggleMe2('fara2')" />
    <img src="Images/p3.png" onclick="return ToggleMe2('fara3')" />
    <img src="Images/p4.png" onclick="return ToggleMe2('fara4')" />

<div name="fara" id="fara1" style="display:none">
<p>This is the information about CI.</p>
</div>

<div name="fara" id="fara2" style="display:none">
<p>This is the information about CH.</p>
</div>

<div name="fara" id="fara3" style="display:none">
<p>This is the information about CI.</p>
</div>

<div name="fara" id="fara4" style="display:none">
<p>This is the information about CC.</p>
</div>

</div>
</body>
</html>
Avatar billede Slettet bruger
26. juli 2011 - 18:51 #1
Helst ville jeg have en enkelt funktion istedet for to. Det kunne jeg dog heller ikke få til at virke.
Avatar billede olebole Juniormester
27. juli 2011 - 03:48 #2
<ole>

Er det noget lignende, du mener:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ (...)
<html xmlns="http://www.w3.org/ (...)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>CCP</title>

<script type="text/javascript">
var elmOpenPara = null;
var elmOpenFara = null;
function ToggleMe(boxid, isPara) {
    var elmBox = document.getElementById(boxid);
    if (elmBox==elmOpenPara || elmBox==elmOpenFara) return;
    elmBox.style.display = "block";
    if (isPara) {
        if (elmOpenPara) elmOpenPara.style.display = "none";
        elmOpenPara = elmBox;
    } else {
        if (elmOpenFara) elmOpenFara.style.display = "none";
        elmOpenFara = elmBox;
    }
}
</script>

</head>

<body>
<div>
    <img src="Images/p1.png" onclick="ToggleMe('para1', true)" />
    <img src="Images/p2.png" onclick="ToggleMe('para2', true)" />
    <img src="Images/p3.png" onclick="ToggleMe('para3', true)" />
    <img src="Images/p4.png" onclick="ToggleMe('para4', true)" />

<div id="para1" style="display:none">
<p>This is the information about Change Initiation.</p>
</div>

<div id="para2" style="display:none">
<p>This is the information about Change Handling.</p>
</div>

<div id="para3" style="display:none">
<p>This is the information about Change Implementation.</p>
</div>

<div id="para4" style="display:none">
<p>This is the information about Change Closure.</p>
</div>

</div>

<div>
    <img src="Images/p1.png" onclick="ToggleMe('fara1')" />
    <img src="Images/p2.png" onclick="ToggleMe('fara2')" />
    <img src="Images/p3.png" onclick="ToggleMe('fara3')" />
    <img src="Images/p4.png" onclick="ToggleMe('fara4')" />

<div id="fara1" style="display:none">
<p>This is the information about CI.</p>
</div>

<div id="fara2" style="display:none">
<p>This is the information about CH.</p>
</div>

<div id="fara3" style="display:none">
<p>This is the information about CI.</p>
</div>

<div id="fara4" style="display:none">
<p>This is the information about CC.</p>
</div>

</div>
</body>
</html>



/mvh
</bole>
Avatar billede Slettet bruger
27. juli 2011 - 12:19 #3
Lige præcis! Kan du give lidt forklaring med også? Hvorfor det andet ikke virkede og det her gør? Nåh ja også smide et svar? :)
Avatar billede Slettet bruger
27. juli 2011 - 18:15 #4
Fandt på en anden måde at gøre det på, som tillader at jeg kan have uendelig mange toggle boxes på min side.

Script:

<script type="text/javascript">
function ToggleMe(boxid, toggleid) {
    var boxes = document.getElementsByTagName("div");
    for(var i=0; i<boxes.length; i++) {
        name = boxes[i].getAttribute("name");
        if (name == boxid) {
            if (boxes[i].id == toggleid) {
                if (boxes[i].style.display == "block") {
                    boxes[i].style.display = 'none';
                } else {
                    boxes[i].style.display = 'block';
                }
            } else {
                boxes[i].style.display = 'none';
            }
        }
    }
}
</script>

Et ny boxset kaldes bare ved at ændre [onclick="return ToggleMe('box1', '1')" />] til box2, box3, osv.

<div>
    <img id="Process" src="Images/Change-process2.png" usemap="Process" />
    <map id="Process" name="Process">
        <area shape="rect" coords="39,18,148,76" href="#" onclick="return ToggleMe('box1', '1')" />
        <area shape="rect" coords="183,18,292,76" href="#" onclick="return ToggleMe('box1', '2')" />
        <area shape="rect" coords="325,18,434,76" href="#" onclick="return ToggleMe('box1', '3')" />
        <area shape="rect" coords="465,18,574,76" href="#" onclick="return ToggleMe('box1', '4')" />
    </map>
</div>

Men mange tak for hjælpen anyway :)
Avatar billede olebole Juniormester
27. juli 2011 - 19:32 #5
Et div kan ikke have en name attribute, så det er ikke en gangbar løsning
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