Linuchs: radio button - was passiert bei onchange?

Hallo,

wenn ich auf eine Gruppe Radioknöpfe mit demselben Namen klicke, scheint das onchange Event zu feuern, die Funktion wird aufgerufen. Aber ich kann nicht feststellen, welcher Wert 0, 1 oder 2 jetzt gültig ist.

Es geht um die Aktualisierung eines Zählers beim Klicken. Gezählt werden Wünsche. Priorität 1 ist ein Wunsch, Priorität 2 ist ein Wunsch, die 0 ist kein Wunsch. Sie dient nur der Abwähl-Möglichkeit, weil man sonst 1 oder 2 nie wieder los wird ;-)

<script>
function zaehleWuensche(obj) {
  // wird aufgerufen, wenn ein Radioknopf geaendert wurde
  // wird aufgerufen, wenn eine Checkbox geaendert wurde
  if ( obj.value > 0 || obj.checked ) anz_wuensche++;
  else anz_wuensche--;
//document.getElementById("anzahl_checked_pos").innerHTML = anz_wuensche;
  document.getElementById("anzahl_checked_pos_submit").innerHTML = anz_wuensche;
}
</script>

<input type=radio name="V01" value=0 onChange="zaehleWuensche(this)" >0
<input type=radio name="V01" value=1 onChange="zaehleWuensche(this)" >1
<input type=radio name="V01" value=2 onChange="zaehleWuensche(this)" checked>2

Bei den Checkboxen ist es einfach. Bei onchange schaue ich, wie jetzt der Wert ist. Bei checked addiere ich 1, bei !checked subtrahiere ich 1.

Bei den radio's habe ich vermutet, dass jeder einzelne das onchange Event feuert. Aber auch dann zähle ich ja falsch, wenn von 1 nach 2 oder von 2 nach 1 gewechselt wird. Weil ich den alten Stand nicht kenne.

Linuchs

  1. Hallo Linuchs,

    so ganz verstehe ich nicht, worin genau Dein Problem besteht.

    wenn ich auf eine Gruppe Radioknöpfe mit demselben Namen klicke, scheint das onchange Event zu feuern, die Funktion wird aufgerufen.

    Wieso "scheint"? Feuert das Event oder nicht?

    Aber ich kann nicht feststellen, welcher Wert 0, 1 oder 2 jetzt gültig ist.

    Wieso nicht? Machst Du doch schon: obj.value. Oder was meinst Du mit "jetzt gültig"?

    Bei den radio's habe ich vermutet, dass jeder einzelne das onchange Event feuert.

    Tun sie es nicht!?

    Aber auch dann zähle ich ja falsch, wenn von 1 nach 2 oder von 2 nach 1 gewechselt wird.

    Was bedeutet "falsch zählen"?

    Weil ich den alten Stand nicht kenne.

    Wieso kennst Du den alten Stand nicht?

    Gruß, Dennis

  2. Tach!

    if ( obj.value > 0 || obj.checked ) anz_wuensche++; else anz_wuensche--;

    Diese Bedingung ist nur false, wenn value <= 0 ist. Sollte da vielleicht ein && stehen?

    Selbst wenn man das nicht anhand des Codes sieht, Browser haben Debugger an Bord. Beim Fehlersuchen hilft es, schrittweise durch den Code zu gehen und zuzuschauen was passiert. Nutze die Möglichkeiten und übe dich in deren Umgang!

    dedlfix.

  3. @@Linuchs

    <input type=radio name="V01" value=0 onChange="zaehleWuensche(this)" >0
    <input type=radio name="V01" value=1 onChange="zaehleWuensche(this)" >1
    <input type=radio name="V01" value=2 onChange="zaehleWuensche(this)" checked>2
    

    Die Buttons haben keine Beschriftung. Sollten sie aber haben.

    LLAP

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)