Doc_McSky: Objekte abfragen (Checkbox)

Hallo Leute,

ich bin bei JS irgendwie immer schnell am Ende, daher die vielleicht für euch einfache, für mich aber recht undurchschaubare Angelegenheit.

Ich habe ein Formular, welches je nach Einstellung des Admin u.a. verschiedene Checkboxen zur Verfügung stellt. Damit diese einheitlich sind, sind die Namen der Checkboxen als Array deklariert, also z.B. einer hier:

  
<input type="checkbox" name="cargoadd[]" value="102030" id="cklick0" >  

Vor dem absenden wird eine Scriptfunktion aufgerufen, die prüfen soll, ob noch freie Checkboxen übrig sind mit:

  
<input type="button" name="shop" value="weiter" onClick="check_shipping(this.form.elements['cargoadd[]'])" >  

die JS Funktion dazu:

  
function check_shipping(adds) {  
 var leere = false;  
 if (typeof(adds) != "undefined") {  
  for (var x=0; x<adds.length; x++) {  
   if (adds[x].checked == false)  
    leere = true;  
  }  
 }  
 if (leere)  
  alert("ACHTUNG - HINWEIS!\n\nEs stehen noch mögliche Zusatzleistungen zur Verfügung.");  
 document.forms.basket.submit();  
}  

Wenn überhaupt irgendwelche Zusatzoptionen aufgelistet werden (wie gesagt, Admin gesteuert), dann prüfe alle ob ein oder auch mehrere "ungecheckte" dabei sind und gib ne Meldung aus.
Klappt prima, aber nur solange mind. 2 Checkboxen mit cargoadd[] gelistet sind, gibt es nur einen, dann existiert "adds" zwar, aber die Schleife wird nicht durchlaufen, da adds.length undefiniert ist statt eigentlich den Wetr 1 zu beinhalten, worin liegt der Fehler?

Über eure Hilfe wäre ich echt dankbar.

Gruß
Der doc

  1. Hi,

    Klappt prima, aber nur solange mind. 2 Checkboxen mit cargoadd[] gelistet sind, gibt es nur einen, dann existiert "adds" zwar, aber die Schleife wird nicht durchlaufen, da adds.length undefiniert ist statt eigentlich den Wetr 1 zu beinhalten, worin liegt der Fehler?

    der Fehler liegt darin, dass du annimmst, Javascript würde *immer* ein Array der Checkbox-Objekte erzeugen. Existiert nur eines, bekommst du aber kein Array mit nur einem Element, sondern das eine Element selbst.
    Du musst also abfragen, ob adds eine length-Eigenschaft hat; wenn nicht, ist es direkt eine Referenz auf das einzige existierende Checkbox-Objekt.

    Über eure Hilfe wäre ich echt dankbar.

    Man ist dankbar "für" etwas, nicht "über".

    So long,
     Martin

    PS: Ich verwende in der Beschreibung den Begriff "Array", was nicht ganz korrekt ist; es ist eine Collection. Man geht damit aber in diesem Fall um wie mit einem Array.

    --
    PCMCIA: People Can't Memorize Computer Industry Acronyms
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo nochmal,

      der Fehler liegt darin, dass du annimmst, Javascript würde *immer* ein Array der Checkbox-Objekte erzeugen.

      Danke, genau das war es, jetzt ist die Abfrage etwas umfangreicher geworden, aber klappt prima, immer wieder erstaunlich wie schnell einem geholfen werden kann, wenn man den Wald vor lauter Bäumen nicht sieht.

      So, jetzt schließe ich, sonst verhäddere ich mich wieder in der deutschen Sprache, ich bitte um Entschuldigung für mein Unvermögen lieber Namensvetter, trotz allem danke ich dir für deine schnelle Hilfe. :-)

      Gruß
      Doc