Konrad Herzog: Kleiner Bug in einer Addition von Checkboxen

Folgendes Script funktioniert wunderbar, wenn in dem Formular
2 oder mehr Checkboxen enthalten sind. Ist da aber nur 1 input
type=checkbox, wird onClick das Resultat nicht ausgegeben.
Kann mir jemand sagen, wo ich die Funktion abändern muss, um
auch bei nur einer Checkbox onClick das richtige Resultat zu
erhalten?

<form name="myForm" action="save.asp" method=post>
 <input onClick="addition(this,24);" type="checkbox" name="ArtikelCheckListe" value="593286">
 <input onClick="addition(this,46);" type="checkbox" name="ArtikelCheckListe" value="593287">
 <input onClick="addition(this,23);" type="checkbox" name="ArtikelCheckListe" value="593288">
 <input type=text name="result" readOnly>
</form>

<script type="text/javascript">
function addition(el,wert){
 var summe = 0; // Anfangsbetrag
 el.value2=wert;

var liste = el.form[el.name]; // Die Liste aller Checkboxen mit dem Namen
 for(var i = 0; i < liste.length; i++)
    summe +=  (liste[i].checked && liste[i].value2) ? liste[i].value2 : 0;
 el.form.result.value = summe;
}
</script>

  1. hi,

    Folgendes Script funktioniert wunderbar, wenn in dem Formular
    2 oder mehr Checkboxen enthalten sind. Ist da aber nur 1 input
    type=checkbox, wird onClick das Resultat nicht ausgegeben.

    Wenn nur ein Element des Namens vorhanden ist, dann erhältst du keine NodeList.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke schon mal.

      Folgendes Script funktioniert wunderbar, wenn in dem Formular
      2 oder mehr Checkboxen enthalten sind. Ist da aber nur 1 input
      type=checkbox, wird onClick das Resultat nicht ausgegeben.

      Wenn nur ein Element des Namens vorhanden ist, dann erhältst du
      keine NodeList.

      Sowas habe ich vermutet. In einer Sprache, die ich verstehe
      (Sorry, aber bin wirklich Javaunfähig und werde es mit
      grosser Wahrscheinlichkeit nach diesem Script auch nie
      mehr gebrauchen) würde die Funktion dann so aussehen:

      function addition(el,wert){
       var summe = 0; // Anfangsbetrag
       el.value2=wert;

      var liste = el.form[el.name]; // Die Liste aller Checkboxen mit dem Namen

      ------------------------------------
       If liste.length = False Then  // also wenn NodeList vorhanden ist
         If liste.element.checked = True Then
           el.form.result.value = wert
         Else
           el.form.result.value = summe
         End If
       Else

      for(var i = 0; i < liste.length; i++)
           summe +=  (liste[i].checked && liste[i].value2) ? liste[i].value2 : 0;
         el.form.result.value = summe;

      End If
      }

      Lässt sich das in Javascript übersetzen?

      1. Hallo,

        Wenn nur ein Element des Namens vorhanden ist, dann erhältst du
        keine NodeList.
        ...
        Lässt sich das in Javascript übersetzen?

        ich würde aus dem einen Element ein Array machen:

          
        var liste = el.form[el.name]; // Die Liste aller Checkboxen mit dem Namen  
        if ( ! liste.length) liste = new Array(liste);  //  ggf ein Array mit 1 Element  
        
        

        damit sollte der Spezialfall abgehandelt sein.

        Gruß plan_B

        --
             *®*´¯`·.¸¸.·
        1. ich würde aus dem einen Element ein Array machen:
          damit sollte der Spezialfall abgehandelt sein.

          Das war die Lösung! Vielen Dank plan_B!