Frischfleisch: Link bzw DIV nur bei aktivierter Checkbox anzeigen?

Hallo!
Ich versuche im Moment folgendes:
Ich habe 2 Checkboxen und darunter einen Link.
Dieser Link soll nur sichtbar sein wenn einer der beiden Checkboxen (oder beide) true, also aktiviert ist/sind.

Im HTML schaut das alles so aus:

  
  
<form>  
    <input type="checkbox" name="check1" id="1" onclick="funChangeStateExtra('check1')" value="">  
    <input type="checkbox" name="check2" id="2" onclick="funChangeStateExtra('check2')" value="">  
</form>  
  
<div id="link1" style="display:none;">  
    <a name="link">  
</div>  
  

Mein bisheriger JS Code ist folgender:

  
  
function funChangeStateExtra(name)  
{  
    var checkbox = name;  
    var showSubmitCB1 = false;  
    var showSubmitCB2 = false;  
  
    if(checkbox == 'check1')  
    {  
        var cb1 = document.getElementsByName("check1")[0];  
        if(cb1.checked == false)  
        {  
            cb1.checked = true;  
            showSubmitCB1 = true;  
        }  
        else if(cb1.checked == true)  
        {  
            cb1.checked = false;  
            showSubmitCB1 = false;  
        }  
    }  
    else if(checkbox == 'check2')  
    {  
        var cb2 = document.getElementsByName("check2")[0];  
        if(cb2.checked == false)  
        {  
            cb2.checked = true;  
            showSubmitCB1 = true;  
        }  
        else if(cb2.checked == true)  
        {  
            cb2.checked = false;  
            showSubmitCB1 = false;  
        }  
    }  
  
    if(showSubmitCB1 == true || showSubmitCB2 == true)  
    {  
        document.getElementById('link1').style.display = "block";  
    }  
    else if(showSubmitCB1 == false && showSubmitCB2 == false)  
    {  
        document.getElementById('link1').style.display = "none";  
    }  
}  
  

Nun habe ich das Problem, dass das alles nur bei der ersten Checkbox funktioniert. Wenn ich die 2te anklicke dann passiert nichts. Sie wird nicht mal auf true gesetzt.
Wenn die erste angeklickt ist (und der Link auch sichtbar ist) und ich dann die 2te anklicke, dann verschwindet der Link wieder, die erste ist aber noch aktiviert, also auf true.

Seht ihr da meinen Fehler?

Grüße

  1. Dein Hauptfehler ist: Du machst es zu kompliziert! So geht das:

    <input type="checkbox" id="cb1" onclick="checkBoxes();">  
    <input type="checkbox" id="cb2" onclick="checkBoxes();">  
    <a href="#" id="lnk" style="display: none;">
    
    function checkBoxes() {  
       document.getElementById('lnk').style.display =  
         ((document.getElementById('cb1').checked ||  
           document.getElementById('cb2').checked) ? 'inline' : 'none');  
    }
    

    Bevor Du jetzt die Geschwister von Bonnie und Clyde, nämlich Copy und Paste rausholst, versuche bitte, diesen Code zu verstehen. Alles, was Du machen willst, ist:

    Wenn eine der beiden Checkboxen die Eigenschaft checked positiv zurückgibt, soll der display-Wert im Style-Attribut des Links (oder von mir aus auch dem div, das kannst Du gern anpassen) auf 'inline' (oder block bei div) gesetzt werden, sonst auf 'none'.

    Im JavaScript-Code findest Du eine verkürzte if-Abfrage, die folgendermaßen aussieht: [Bedingung] ? [Wenn ja] : [Wenn nicht];

    Diese Schreibweise ist kürzer und in diesem Fall lesbar genug, dass nicht eine if-Abfrage sinnvoller wäre. Des weiteren sind alle Parameter bei dem Script überflüssig, da wir die Werte, die wir einlesen, ohnehin aus Objekten mit ID bekommen. Je weniger JavaScript wir ins HTML packen, desto besser.

    Gruß, LX

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. 1000 Dank!
      Man kann es sich also auch um einiges einfacher machen. Danke. Den Code habe ich verstanden, nur wäre ich darauf warscheinlich nie von alleine gekommen.

      1. Normalerweise poste ich keine fertigen Lösungen, deshalb habe ich mir ernste Sorgen gemacht.

        Gruß, LX

        --
        X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: Unusual
        X-Please-Search-Archive-First: Absolutely Yes
        1. hi,

          Normalerweise poste ich keine fertigen Lösungen, deshalb habe ich mir ernste Sorgen gemacht.

          Ansich habe ich ja keine Ahnung von Javascript, aber das kleine Fitzel verstehe ja sogar ich ;)

          mfg

          --
          „Wenn du nicht bereit bist, dafür zu sterben, dann streiche das Wort »Freiheit« aus deinem Vokabular.“ -- Malcolm X
          I Have a Dream
          1. Ansich habe ich ja keine Ahnung von Javascript, aber das kleine Fitzel verstehe ja sogar ich ;)

            Das verstehe ich als Kompliment: mein Code ist offenbar allgemein verständlich...

            Gruß, LX

            --
            X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: Unusual
            X-Please-Search-Archive-First: Absolutely Yes
            1. hi,

              Ansich habe ich ja keine Ahnung von Javascript, aber das kleine Fitzel verstehe ja sogar ich ;)
              Das verstehe ich als Kompliment:

              Will ich doch hoffen ;)

              mein Code ist offenbar allgemein verständlich...

              Naja, zumindest für mich, auch weil du einige Anweisungen verwendest, die in PHP genutzt werden und die ich noch nicht so lange kenne.
              Vor einem halben Jahr noch hätte ich es nicht verstanden.

              mfg

              --
              „Wenn du nicht bereit bist, dafür zu sterben, dann streiche das Wort »Freiheit« aus deinem Vokabular.“ -- Malcolm X
              I Have a Dream