Axel Richter: checkbox hidden fkt. nicht

Beitrag lesen

Hallo,

ich habe folgendes script:

<script type="text/javascript">
   function show(fieldname)
   {

if(document.formular.boxone.checked)
    {
     document.getElementById(fieldname).style.visibility = "hidden"; //visible
    }
    else
     document.getElementById(fieldname).style.visibility = "visible"; //hidden

if(document.formular.boxtwo.checked)
    {
     document.getElementById(fieldname).style.visibility = "hidden"; //visible
    }
    else
     document.getElementById(fieldname).style.visibility = "visible"; //hidden

if(document.formular.boxthree.checked)
    {
     document.getElementById(fieldname).style.visibility = "hidden"; //visible
    }
    else
     document.getElementById(fieldname).style.visibility = "visible"; //hidden

}

</script>
</head>

<body>
  <form name="formular" action="">
   <table border="1">
    <tr>
     <td>
      <input type="checkbox" name="boxone" onClick="void(show('fieldone'), show('transfer'));">geehrte <b>to find</b>
     </td>
     <td>
      <input type="CHECKBOX" name="fieldone" style="visibility:visible" value="Ihre Eingabe">geehrte <b>blacklist</b>
     </td>
     <td>
      <input type="CHECKBOX" name="transfer" style="visibility:visible" value="Ihre Eingabe">geehrte <b>transfer</b>
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="boxtwo" onClick="void(show('fieldone1'), show('transfer1'));">damen <b>to find</b>
     </td>
     <td>
      <input type="CHECKBOX" name="fieldone1" style="visibility:visible" value="Ihre Eingabe">damen <b>blacklist</b>
     </td>
     <td>
      <input type="CHECKBOX" name="transfer1" style="visibility:visible" value="Ihre Eingabe">damen <b>transfer</b>
     </td>
    </tr>
    <tr>
     <td>
      <input type="checkbox" name="boxthree" onClick="void(show('fieldone2'), show('transfer2'));">herren <b>to find</b>
     </td>
     <td>
      <input type="CHECKBOX" name="fieldone2" style="visibility:visible" value="Ihre Eingabe">herren <b>blacklist</b>
     </td>
     <td>
      <input type="CHECKBOX" name="transfer2" style="visibility:visible" value="Ihre Eingabe">herren <b>transfer</b>
     </td>
    </tr>
   </table>

</form>

wenn ich die letzte checkbox (herren to find) anklicke, dann verschwinden auch herren blacklist und herren transfer.

Ja, im IE. Für alle Browser gilt: document.getElementById(fieldname) kann kein Element liefern, weil Du keinerlei Elemente mit IDs im HTML hast. Warum also nicht
document.formular.elements[fieldname].style.visibility = "hidden";
?

warum aber nicht unabhängig davon damen blacklist und damen transfer?

Gehen wir Deine Logik mal durch:
Sei document.formular.boxtwo angeklickt, dann wird
show('fieldone1');
aufgerufen. Damit ist fieldname='fieldone1'. Sei nun document.formular.boxtwo.checked, dann wird
document.formular.elements['fieldone1'].style.visibility = "hidden";
gesetzt... und das Programm läuft weiter zu:

if(document.formular.boxthree.checked)
    {
     document.formular.elements[fieldname].style.visibility = "hidden"; //visible
    }
    else
    {
    document.formular.elements[fieldname].style.visibility = "visible"; //hidden
    }

Nun, document.formular.boxthree.checked ist false, dann wird der else-Zweig, also:
document.formular.elements['fieldone1'].style.visibility = "visible";
ausgeführt. E voilà.

Überdenke also Deine Logik.

viele Grüße

Axel