Dom: problem mittels javascript checkboxen auf checked zu prüfen

hallo zusammen,
ich hab ein problem, mit einem javascript.

<script type="text/javascript">
function getclickedCheck(){
    for (i=1;i<=document.test.elements.length-1;i++)//beginnt der index bei 1 oder 0?{
        if(document.test.elements[i].type == "checkbox"){
            if(document.test.elements[i].checked ==    true){
                document.write("checkbox " & i & " angeklickt <br>");
            }
        }
    }
}
</script>

aufruf über

<form name="test" method="post" action="">
          <input type="checkbox" name="check1" value="1">1</input> <br>
        <input type="checkbox" name="check2" value="2">2</input> <br>
          <input type="checkbox" name="check3" value="3">3</input> <br>
        <input type="checkbox" name="check4" value="4">4</input> <br>
          <input type="checkbox" name="check5" value="5">5</input> <br>
        <input type="checkbox" name="check6" value="6">6</input> <br>
          <input type="checkbox" name="check7" value="7">7</input> <br>
        <input type="checkbox" name="check8" value="8">8</input> <p>
        <input type="button" value="check" name="btngetchecked" onClick="javascript:getclickedCheck()">
</form>

das problem ist nun, das ich immer die fehlermeldung "Elements ist null oder kein objekt". der fehler ist in der zeile der for schleife, das hier: i<=document.test.elements.length-1

wenn ich das erste element anklicke kommt der fehler nicht.
nur sobald ich ein element größer 1 anklicke tritt der fehler auf.
weis einer eventuell woran es liegen könnte?

gruß
Dom

  1. Hallo Dom.

    ich hab ein problem, mit einem javascript.
    document.write("checkbox " & i & " angeklickt <br>");

    Hier überschreibst du dein komplettes Dokument, was zwangsläufig zu einem Fehler führen muss (schau mal in den Quelltext). Deshalb geht es auch nur beim ersten Mal. Füge statt des document.write ein z.B. alert ein, dann sollte es gehen.

    Freundschaft!
    Siechfred

    --
    Nichts ist schwerer einzureißen als die Mauer in den Köpfen.
    1. super.
      danke.
      eins noch, wie müsste es dann aussehen, wenn ich das in der html seite unten anfügen wollte?
      und nicht überschreiben?
      wär das arg kompliziert?

      1. hi,

        eins noch, wie müsste es dann aussehen, wenn ich das in der html seite unten anfügen wollte?
        und nicht überschreiben?
        wär das arg kompliziert?

        du könntest innerHTML nutzen [1], um an irgendein element weiteren inhalt anzufügen, das wäre die vergleichbar einfache methode.

        andernfalls müsstest du das DOM bemühen - neue elemente erzeugen, ihnen die nötigen eigenschaften zuweisen, und sie ins dokument einfügen. wenn du das machen willst, beschäftige dich näher mit den methoden von document und node.

        gruß,
        wahsaga

        [1] liegt nur im IE unterhalb document.all.elementID, bei den anderen browsern, die das inzwischen auch adaptiert haben, direkt unterhalb des jeweiligen elementes. zugriff darauf beispielsweise über die getElement(s)By...-methoden des document-objektes.)

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      2. Hallo Dom.

        wie müsste es dann aussehen, wenn ich das in der html seite unten anfügen wollte? und nicht überschreiben?

        Schau dir mal in Selfhtml unter createElement und appendChild die Beispiele an.

        Freundschaft!
        Siechfred

        --
        Nichts ist schwerer einzureißen als die Mauer in den Köpfen.
  2. <script type="text/javascript">
    function getclickedCheck(){
        for (i=1;i<=document.test.elements.length-1;i++)//beginnt der index bei 1 oder 0?{

    Ein Array beginnt in JS imer bei nullund du kannst der Funktion direkt die Referenz auf das Formular übergeben.

    function getclickedCheck(form){
    for(var i = 0; i < form.elements.length - 1; i++)
    if(form.elements[i].type == "checkbox" && if(form.elements[i].checked == true) alert("checkbox " + i + " angeklickt ");}
    }
    Aufruf:

    <input type="button" value="check" name="btngetchecked" onClick="getclickedCheck(this.form)">

    Struppi.