Rolf: auf eine CheckBox zugreifen

Hallo,

in einem Formular existieren mehrere CheckBoxen:

<form name="myFORM" action="test.php">  
<input type="checkbox" name="bx[0]" value="Wurst">  
<input type="checkbox" name="bx[1]" value="Milch">  
<input type="checkbox" name="bx[2]" value="Brot"></form>

Nun soll eine zufällige Vorauswahl getroffen werden:

function getCheck() {  
    var i = Math.round(2 * Math.random());  
    alert('Nummer:' + i);  
    document.myFORM.bx[i].checked = true;  
}

Es gibt aber nur eine Fehlermeldung:
    "document.myFORM.bx ist Null oder kein Objekt"

Haargenau die gleiche Methode auf RadioButtons angewendet klappt bestens.
Irgendwie fehlt mir da der richtige Ansatz - hat den jemand ...

m.b.G. Rolf

  1. Hi,

    <input type="checkbox" name="bx[0]" value="Wurst">
    <input type="checkbox" name="bx[1]" value="Milch">

    document.myFORM.bx[i].checked = true;

    Es gibt aber nur eine Fehlermeldung:
        "document.myFORM.bx ist Null oder kein Objekt"

    Mit diesem Problem kommt alle Nase lang jemand hier angerannt - Lesen koennte helfen.

    http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines, Schema 4.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hallo Chris,

      Mit diesem Problem kommt alle Nase lang jemand hier angerannt - Lesen koennte helfen.

      nicht wirklich,
      denn da steht nicht, warum man den Namen von Radiobutton indizieren darf,
      das bei einer Checkbox nicht zulässig ist bzw. der Index zum Namen rechnet.

      Mit anderen Worten, es gibt unlogische Ausnahmen, die man sich schlecht
      merken kann, weshalb die Leute regelmäßig hier aufschlagen ... ;-)

      Aber jetzt läufts, vielen Dank, schönes WE, bis demnächst

      m.b.G. Rolf

      1. Hi,

        Mit diesem Problem kommt alle Nase lang jemand hier angerannt - Lesen koennte helfen.
        nicht wirklich,
        denn da steht nicht, warum man den Namen von Radiobutton indizieren darf,
        das bei einer Checkbox nicht zulässig ist

        Natuerlich ist es in beiden Faellen zulaessig.

        Mit anderen Worten, es gibt unlogische Ausnahmen

        Bei Radionbuttons mit name="x[0]", name="x[1]" etc. zu arbeiten, waere bloedsinnig, weil die Radiobuttons dann nicht mehr gruppiert sind (was man aber wohl i.a.R. wollen wird).

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hallo Chris,

          hast recht, da gibt es feine Unterschiede:

          <form name="myTest" action="test.php" method="post">  
          <input name="rb" type="radio" value="ja">  
          <input name="rb" type="radio" value="nein">  
          <input name="rb" type="radio" value="vielleicht">  
          <input name="cb[0]" type="checkbox" value="Wurst">  
          <input name="cb[1]" type="checkbox" value="Milch">  
          <input name="cb[2]" type="checkbox" value="Käse">
          

          Wenn man das so hinschreibt, wird es einem klar!

          m.b.G. Rolf

      2. denn da steht nicht, warum man den Namen von Radiobutton indizieren darf,
        das bei einer Checkbox nicht zulässig ist bzw. der Index zum Namen rechnet.

        Da missverstehst du etwas.

        Wenn gleichnamige Checkboxen oder Radiobuttons existieren, dann liefert document.forms.formularname.elements.feldname einen Array. Du musst zwischen Feldnamen und diesem Array unterscheiden.

        Wenn ein Feld mit name="bla[0]" existiert, dann ist dieses Feld über .elements["bla[0]"], nicht etwa über .elements.bla[0] zugänglich. Das liegt daran, dass "bla[0]" als Eigenschaftsname zwar möglich ist, man aber auf solch benannte Eigenschaften nicht über die Schreibweise objekt.unterobjekt zugreifen kann, sondern nur mittels objekt["unterobjekt"] - weil die eckigen Klammern eben eine Bedeutung in JavaScript haben und nicht als Teil des Eigenschaftsnamens interpretiert werden.

        .elements.bla[0] ist auch möglich, allerdings in einem anderen Fall und hat dann eine andere Bedeutung: Wenn es mehrere Felder mit name="bla" gibt, dann liefert .elements.bla[0] das erste davon. Du suchst also gleichnamige Felder. Damit diese als Array in JavaScript zur Verfügung stehen, musst du keine Indizes in die Feldnamen schreiben, im Gegenteil.

        Mathias