christs: checked Checkboxes gezählt

Hallo zusammen,
ich versuche mal ein code (siehe unten) zu implementieren. Beim anklicken sollte die Variable sich um eins erhöhen. Am Ende sollte die Variable "count" ausgegeben werden. Aber es funktioniert nicht. Können Sie mir helfen?
Danke

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<html><head><title>Test</title>
<script type="text/javascript">

function Weiter () {

var zutat = ["salami","pilze", "sardellen", "Tomaten"];  
  
var count=0;  
var i,j,h;  
var message="Hello";  
  
for (i=0; i<zutat.length; i++){  
	if(document.Testform.Art[i].checked == true){  
		count = count + 1;  
	}  
}  

document.getElementById("countValue").value=count;  

}
</script>
</head>
<body>
<form name="Testform" action="">
<p id="ausgabefeld"></p>
<input type="checkbox" name="zutat[]" value="salami"> Salami<br>

<input type="checkbox" name="zutat[]" value="pilze"> Pilze<br>
    <input type="checkbox" name="zutat[]" value="sardellen"> Sardellen<br>
    <input type="checkbox" name="Zutat[]" value="Tomaten"> Tomaten<br>
    <input type="text" name="countValues" id="countValue" size="10"/>count<br>
<input type="button" value="Starten" onclick="Weiter()">
</form>
</body>

</html>

  1. Mahlzeit christs,

    var zutat = ["salami","pilze", "sardellen", "Tomaten"];

    Hier definierst Du ein Array.

    for (i=0; i<zutat.length; i++){

    Hier iterierst Du durch dieses Array und willst offenbar für jedes Array-Element etwas tun.

      if(document.Testform.Art[i].checked == true){  
      	count = count + 1;  
      }  
    

    Anscheinend doch nicht. Zu diesem Stückchen Code hätte ich dann aber noch einige Anmerkungen:

    • generell ist ein Vergleich, ob etwas, das wahr oder falsch sein kann, wahr ist, sinnfrei

    • (nicht nur) in diesem Fall ist ein Zugriff auf Formularelemente nach <http://de.selfhtml.org/javascript/objekte/elements.htm@title=Schema 2> keine gute Idee, da/wenn im Namen der Elemente Sonderzeichen enthalten sind

    • in Deinem Formular existieren allerdings gar keine Elemente mit dem Namen "Art[]"

    • das Erhöhen einer Zählervariable um 1 geht auch kürzer

    Kurzum:

    if (document.forms['Testform'].elements[i].checked)  
      count++;
    

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo Ekki,
      ich habe den Code korrigiert (siehe unten). Aber keine Ausgabe! Danke.

        
        
      <script type="text/javascript">  
        
      function Weiter () {  
        
      	var zutat = ["salami","pilze", "sardellen", "Tomaten"];  
      	var count=0;  
      	var i,j,h;  
      	  
      	  
      	for (i=0; i<zutat.length; i++){  
      		if (document.forms['Testform'].elements[i].checked)  
      		{  
      			  count++;  
        
      		}  
      	}  
        
      	document.getElementById("countValue").value=count;  
      	  
      }  
      </script>  
      </head>  
      <body>  
      <form name="Testform" action="">  
      	<input type="checkbox" name="zutat" value="salami"> Salami<br>  
          <input type="checkbox" name="zutat" value="pilze"> Pilze<br>  
          <input type="checkbox" name="zutat" value="sardellen"> Sardellen<br>  
          <input type="checkbox" name="Zutat" value="Tomaten"> Tomaten<br>  
          <input type="text" name="countValues" id="countValue" size="10"/>count <br>  
      	<input type="button" value="Starten" onclick="Weiter()">  
      </form>  
      </body>  
      </html>  
        
      
      
      1. [latex]Mae  govannen![/latex]

        ich habe den Code korrigiert (siehe unten). Aber keine Ausgabe! Danke.

        Ich habe den Code lokal bei mir getestet. Funktioniert einwandfrei.
        Irgendwelche Meldungen in der Fehler-Konsole?

        Cü,

        Kai

        --
        Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
        in Richtung "Mess up the Web".(suit)
        SelfHTML-Forum-Stylesheet
        1. Hi,

          Ich habe den Code lokal bei mir getestet. Funktioniert einwandfrei.

          was sich ändert, wenn die Checkboxen plötzlich nicht mehr die ersten Formularelemente in dem Formular sind.

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
      2. Hi,

        ich habe den Code korrigiert (siehe unten). Aber keine Ausgabe!

        Dann machst du noch irgendetwas anderes falsch - wenn ich den gezeigten Code per Copy&Paste übernehme (und im ein <html><head> ergänze), dann bekomme ich die Anzahl der jeweils angekreutzen Checkboxen im Textfeld angezeigt, wenn ich auf „Starten“ klicke. (Getestet in FF 3.6.8)

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hi,

      if(document.Testform.Art[i].checked == true){  
    

    Du hast im <form name="Testform"> nicht ein einziges Formularelement mit name="Art". Der Name ist, soweit ich es sehen kann, entweder "zutat[]" oder "Zutat[]". Iteriere also über diese Elemente.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Hi,

    ich versuche mal ein code (siehe unten) zu implementieren. Beim anklicken sollte die Variable sich um eins erhöhen. Am Ende sollte die Variable "count" ausgegeben werden. Aber es funktioniert nicht.

    Lies bitte zunächst die Tipps für Fragende noch mal; und liefere dann eine Problembeschreibung, die nicht analog zum nichtssagenden „funzt nich“ ist.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  4. Es funktioniert. Danke.