Chrischaaan: Checkbox abfrage

Hallo

folgenden Code für nen "theorietest" von der fahrschule hab ich mir gemacht.(is nich für kommerzielle zwecke)

<html> <head> <script> function Auswertung() { // Variablen var AW1  = false; var AW2  = false; var AW3  = false; var AW4  = false; var AW5  = false; var AW6  = false; var AW7  = false; var AW8  = false; var AW9  = false; var AW10 = false;

// Frage 1 Antwort Check  if(document.FS.Frage1_a.checked==false & document.FS.Frage1_b.checked==true & document.FS.Frage1_c.checked==false)  {   AW1 == true;  }  else  {   AW1 == false;  }

// Frage 2 Antwort Check  if(document.FS.Frage2_a.checked==true & document.FS.Frage2_b.checked==false & document.FS.Frage2_c.checked==true)  {   AW2 == true;  }  else  {   AW2 == false;  }

// Frage 3 Antwort Check  if(document.FS.Frage3_a.checked==false & document.FS.Frage3_b.checked==false & document.FS.Frage3_c.checked==true)  {   AW3 == true;  }  else  {   AW3 == false;  }

// Frage 4 Antwort Check  if(document.FS.Frage4_a.checked==false & document.FS.Frage4_b.checked==false & document.FS.Frage4_c.checked==true)  {   AW4 == true;  }  else  {   AW4 == false;  }

// Frage 5 Antwort Check  if(document.FS.Frage5_a.checked==true & document.FS.Frage5_b==false & document.FS.Frage5_c.checked==true)  {   AW5 == true;  }  else  {   AW5 == false;  }

// Frage 6 Antwort Check  if(document.FS.Frage6_a.checked==false & document.FS.Frage6_b.checked==true & document.FS.Frage6_c.checked==true)  {   AW6 == true;  }  else  {   AW6 == false;  }

// Frage 7 Antwort Check  if(document.FS.Frage7_a.checked==false & document.FS.Frage7_b.checked==false & document.FS.Frage7_c.checked==true)  {   AW7 == true;  }  else  {   AW7 == false;  }

// Frage 8 Antwort Check  if(document.FS.Frage8_a.checked==false & document.FS.Frage8_b.checked==true & document.FS.Frage8_c.checked==false)  {   AW8 == true;  }  else  {   AW8 == false;  }

// Frage 9 Antwort Check  if(document.FS.Frage9_a.checked==false & document.FS.Frage9_b.checked==true & document.FS.Frage9_c.checked==true)  {   AW9 == true;  }  else  {   AW9 == false;  }

// Frage 10 Antwort Check  if(document.FS.Frage10_a.checked==true & document.FS.Frage10_b.checked==false & document.FS.Frage10_c.checked==false)  {   AW10 == true;  }  else  {   AW10 == false;  }

// Ergebniss Check

if((AW1=1) & (AW2=1) & (AW3=1) & (AW4=1) & (AW5=1) & (AW6=1) & (AW7=1) & (AW8=1) & (AW9=1) & (AW10=1))  {   window.alert("Sie haben bestanden.\n\nHerzlichen Glückwunsch!");  }  else  {   window.alert("Sie haben leider nicht bestanden.");  } } </script> </head> <body> <h3>Fahrschule einmal anders</h3>

<form name="FS"> <h5>Frage 1</h5> Sie fahren mit einer Suzuki 1300 GSXR Hayabusa mit einer mittleren Geschwindigkeit von 160km/h in einer geschlossenen Ortschaft. Plötzlich taucht vor Ihnen eine erstzugelassene Harley-Davidson auf. Wie verhalten Sie sich ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage1_a" value="Frage1" class="Check">  Mit unverminderter Geschwindigkeit weiterfahren</li>  <li><input type="Checkbox" id="Frage1_b" value="Frage1" class="Check">      Es muß damit gerechnet werden, daß vom vorausfahrenden Fahrzeug Teile auf die Fahrbahn      fallen. Daher muß mit erhöhter Bremsbereitschaft gefahren werden.</li>  <li><input type="Checkbox" id="Frage1_c" value="Frage1" class="Check">      Bei Kindern in geschlossenen Ortschaften muß immer erhöhte Aufmerksamkeit und               Bremsbereitschaft gezeigt werden.</li> </ol>

<h5>Frage 2</h5> Sie nähern sich mit Ihrer Hayabusa mit einer mittleren Geschwindigkeit von 260 km/h einer LKW-Kolonne auf gleicher Fahrspur, die sich etwa 600m vor Ihnen befindet .Wie verhalten Sie sich ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage2_a" value="Frage2" class="Check">      In den 3. Gang schalten und beschleunigen, um der Gefahr schnell auszuweichen</li>  <li><input type="Checkbox" id="Frage2_b" value="Frage2" class="Check">      Stark abbremsen, um die Geschwindigkeit zu verringern</li>  <li><input type="Checkbox" id="Frage2_c" value="Frage2" class="Check">      Durch Lichthupe dem LKW anzeigen, daß er auf den Parkstreifen ausweichen soll, da er        noch genügend Zeit hat (8 Sekunden).</li> </ol>

<h5>Frage 3</h5> Wie gross ist der Anhalteweg (=Bremsweg + Reaktionsweg) bei 300 km/h nach der bekannten Faustformel ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage3_a" value="Frage3" class="Check">      300 m</li>  <li><input type="Checkbox" id="Frage3_b" value="Frage3" class="Check">      990 m</li>  <li><input type="Checkbox" id="Frage3_c" value="Frage3" class="Check">      Soweit, wie die nächste LKW-Kolonne entfernt ist.</li> </ol>

<h5>Frage 4</h5> Sie kommen an einer Ampel zum stehen. Auf der nebenliegenden Fahrspur steht eine Harley-Davidson. Grüßen Sie den Fahrer ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage4_a" value="Frage4" class="Check">      Nein, Fahrer von Nutzfahrzeugen sollten nicht gegrüßt</li>  <li><input type="Checkbox" id="Frage4_b" value="Frage4" class="Check">      Ich grüße jeden, schon aus Höflichkeit</li>  <li><input type="Checkbox" id="Frage4_c" value="Frage4" class="Check">      Ich grüße 3 Sekunden später, wenn ich 2 Kilometer entfernt bin.</li> </ol>

<h5>Frage 5</h5> Sie fahren außerorts mit 230 km/h. In einer Baustelle fährt plötzlich eine Harley-Davidson vor Ihnen mit etwa 190 km/h (ohne G-Kat). Wie verhalten Sie sich ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage5_a" value="Frage5" class="Check">      Parkende Fahrzeuge sollten die Autobahn nicht benutzen. Daher rufe ich den                  Abschleppunternehmer an.</li>  <li><input type="Checkbox" id="Frage5_b" value="Frage5" class="Check">      Rechts zügig überholen und den Fahrer durch Lichthupe auf seine Lärmbelästigung             aufmerksam machen.</li>  <li><input type="Checkbox" id="Frage5_c" value="Frage5" class="Check">      Nutzfahrzeuge dürfen nicht überholt werden</li> </ol>

<h5>Frage 6</h5> Sie bemerken im Augenwinkel, daß ein Harley-Fahrer mit seiner erstzugelassenen Maschine am Straßenrand stehengeblieben ist. Wie verhalten Sie sich ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage6_a" value="Frage6" class="Check">      Ich bremse sofort. Diese 4 KM fahre ich gerne zurück und helfe ihm.</li>  <li><input type="Checkbox" id="Frage6_b" value="Frage6" class="Check">      Ich helfe keinen Harley-Fahrern</li>  <li><input type="Checkbox" id="Frage6_c" value="Frage6" class="Check">      Ich melde den Vorfall dem Forstamt</li> </ol>

<h5>Frage 7</h5> Ein Fahrer einer Harley-Davidson "Fat Man" (450 kg) sitzt im Straßengraben fest. Wie verhalten Sie sich ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage7_a" value="Frage7" class="Check">      Dem Fahrer helfen und das Kraftrad aus dem Graben ziehen. Vorher achte ich auf eine         hinreichende Befestigung des Abschleppseils.</li>  <li><input type="Checkbox" id="Frage7_b" value="Frage7" class="Check">      Ich kläre den Fahrer über die Risiken des Motorradfahrens auf.</li>  <li><input type="Checkbox" id="Frage7_c" value="Frage7" class="Check">      Ich fahre unvermindert weiter und melde den Vorfall der Straßenreinigung.</li> </ol>

<h5>Frage 8</h5> Nachts nähern Sie sich außerorts mit 240 km/h einer Bergkuppe. Womit müssen Sie rechnen ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage8_a" value="Frage8" class="Check">      Mit spielenden Kindern auf der Fahrbahn</li>  <li><input type="Checkbox" id="Frage8_b" value="Frage8" class="Check">      Mit liegengebliebenen Fahrzeugen (z. B. amerikanischer Bauart)</li>  <li><input type="Checkbox" id="Frage8_c" value="Frage8" class="Check">      Mit Wild, das in Ihrem Lichtkegel stehenbleibt</li> </ol>

<h5>Frage 9</h5> Warum ist Herbstlaub bei nasser und enger, kurviger Fahrbahn besonders gefährlich ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage9_a" value="Frage9" class="Check">      Bei über 300 km/m verlängert sich der Bremsweg nach der Faustformel beträchtlich            (1980m).</li>  <li><input type="Checkbox" id="Frage9_b" value="Frage9" class="Check">      Durch zu aggressives Fahren könnten Kinder erschrecken und ausrutschen.</li>  <li><input type="Checkbox" id="Frage9_c" value="Frage9" class="Check">      Die Schräglage wird bei Montage eines TopCase beeinträchtigt.</li> </ol>

<h5>Frage 10</h5> Ein Harley-Fahrer lädt Sie an der Ampel zu einem "Rennen" ein. Wie verhalten Sie sich ?

<ol start="1" type="a">  <li><input type="Checkbox" id="Frage10_a" value="Frage10" class="Check">      Ich gebe Viertelgas, um meine Überlegenheit zu zeigen.</li>  <li><input type="Checkbox" id="Frage10_b" value="Frage10" class="Check">      Ich lasse mich nicht beirren und fahre überlegt und rücksichtsvoll und lasse dem Fahrer die Vorfahrt.</li>  <li><input type="Checkbox" id="Frage10_c" value="Frage10" class="Check">      Harley-Fahrer und Hayabusa-Fahrer benutzen nicht die gleichen Kreuzungen, die               Wahrscheinlichkeit ist zu gering.</li> </ol>

<center>  <input type="button" value="Auswerten" onClick="Auswertung()" class="field"> </center>

</form>

</body> </html>

wenn ich nu hier drin:

if((AW1=1) & (AW2=1) & (AW3=1) & (AW4=1) & (AW5=1) & (AW6=1) & (AW7=1) & (AW8=1) & (AW9=1) & (AW10=1))

jeweils nur ein = verwende hab ich immer bestanden, wenn ich zwei nehm immer nicht bestanden.

warum klappt das nich so wie ich mir das vorstelle?? wird der wert der vareiablen nich richtig zugewiesen oder wo liegt der fehler??

bye,christian.

  1. Hi,

    folgenden Code für nen "theorietest" von der fahrschule hab ich mir gemacht.(is nich für kommerzielle zwecke)

    jiargl. Bitte keine solchen Mördercodes posten, 'ne URL ist da *deutlich* besser.

    <script>

    ERROR: Required attribute "type" missing.

    Den Rest tue ich mir jetzt vorerst nicht an.

    if((AW1=1) & (AW2=1) & (AW3=1) & (AW4=1) & (AW5=1) & (AW6=1) & (AW7=1) & (AW8=1) & (AW9=1) & (AW10=1))

    jeweils nur ein = verwende hab ich immer bestanden, wenn ich zwei nehm immer nicht bestanden.

    Ein "=" ist eine Zuweisung, die klappen dürfte und somit immer true ist. "&" ist *keine* AND-Verknüpfung, die lautet "&&".

    warum klappt das nich so wie ich mir das vorstelle??

    Was für Debug-Ausgaben hast Du mit welchem Ergebnis gemacht?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      Ein "=" ist eine Zuweisung, die klappen dürfte und somit immer true ist.

      Meines Wissens ist der Rückgabe-Wert einer Zuweisung nicht "true" um
      anzuzeigen, daß die Zuweisung erfolgreich war. Vielmehr ist der
      Rückgabewert der zugewiesene Wert. Daher geht auch a = b = c = 1;
      1 wird c zugewiesen. Das liefert als Rückgabewert 1. Das wird b zugewiesen,
      liefert wiederum 1, was dann a zugewiesen wird.

      Somit würde hier also "if (1 & 1 & .. & 1)" stehen, was sich wiederum
      zu "if (1)" verkürzen ließe.

      Gruß
      Slyh

      --
      Es gibt 10 Arten von Menschen. Solche, die das Binärsystem verstehen, und solche, die es nicht verstehen.
      Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:} va:} de:] zu:) fl:( ss:) ls:/ js:|
      1. Hi

        Meines Wissens ist der Rückgabe-Wert einer Zuweisung nicht "true" um
        anzuzeigen, daß die Zuweisung erfolgreich war.

        Das ist wohl auch irgendwie richtig, es kommt aber auf die Art die Implementierung von TRUE an. Wird alles als TRUE angenommen, was nicht FALSE (=0) ist, dann ist also jede Wertbelegung auch TRUE.
        Was gegen diese Argumentation sprechen würde wäre, das eigentlich ein if (b=0) { alert("Hallo"); } trotzdem Hallo ausgeben sollte, weil die Wertzuweisung durchgeführt wurde - Aber ist nur so eine Vermutung

        MfG
        Rouven

        --

        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. Hallo,

          Meines Wissens ist der Rückgabe-Wert einer Zuweisung nicht "true" um
          anzuzeigen, daß die Zuweisung erfolgreich war.

          Das ist wohl auch irgendwie richtig, es kommt aber auf die Art die Implementierung von TRUE an. Wird alles als TRUE angenommen, was nicht FALSE (=0) ist,

          Ist bei JavaScript so.

          dann ist also jede Wertbelegung auch TRUE.

          Das verstehe ich jetzt nicht.

          Was gegen diese Argumentation sprechen würde wäre, das eigentlich ein if (b=0) { alert("Hallo"); } trotzdem Hallo ausgeben sollte, weil die Wertzuweisung durchgeführt wurde

          In JavaScript wird aber nicht "Hallo" ausgegeben, da der Rückgabe-
          wert 0 ist, was einem "false" entspricht.

          Gruß
          Slyh

          --
          Es gibt 10 Arten von Menschen. Solche, die das Binärsystem verstehen, und solche, die es nicht verstehen.
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:} va:} de:] zu:) fl:( ss:) ls:/ js:|
    2. Hallo

      Also Debug ergebnisse konnte ich keine bekommen, denn estens hab ich hier in der schule keinen debugger (langeweile - projekt) und zweitens enthält das programm ja auch keine programmierfehler, sondern nen logischen fehler und den findet der debuger ja nich.

      ich hab das jet überall so mit && gemacht und in der wertzuweisung = und bei der abfrage == aber das haut trotzdem nich hin. ich fall immer durch obwohl die antworten halt richtig sein müssten.

      1. Hi,

        Also Debug ergebnisse konnte ich keine bekommen, denn estens hab ich hier in der schule keinen debugger

        äh, Du testest auf einem JavaScript-fähigen System, welches kein alert() kennt? Das halte ich ehrlich gesagt für ein Gerücht.

        und zweitens enthält das programm ja auch keine programmierfehler, sondern nen logischen fehler und den findet der debuger ja nich.

        Debug-Ausgaben haben nichts mit syntaktischen oder grammatischen Fehlern zu tun.

        ich hab das jet überall so mit && gemacht und in der wertzuweisung = und bei der abfrage == aber das haut trotzdem nich hin. ich fall immer durch obwohl die antworten halt richtig sein müssten.

        Offenbar enthalten die Variablen nicht die Werte, die Du erwartest. Prüfe, was sie statt dessen enthalten; ermittle, wie sie dazu kommen.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo Chrischaaan,

    AW1 == true;
      AW1 == false;

    [260 Zeilen Code gelöscht]

    wenn ich nu hier drin:
    if((AW1=1) & (AW2=1) & (AW3=1) & (AW4=1) & (AW5=1) & (AW6=1) & (AW7=1) & (AW8=1) & (AW9=1) & (AW10=1))
    jeweils nur ein = verwende hab ich immer bestanden, wenn ich zwei nehm immer nicht bestanden.

    logisch - nit einem = weist du der jeweiligen Variable den Wert 1 zu. Das geht in der Regel gut geht und ergibt also true - die ganze Bedingung wird true -> immer Bestanden.
    mit == dagegen schaust du ob die Variablen den wert 1 haben. Das haben sie aber nicht (sie haben den bolschen Wert true) also wird das ganze false -> nie bestanden

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. Hallo,

    noch ein anderer kleiner Tip am Rande:

    Statt der folgenden Blöcke:

    // Frage 1 Antwort Check
      if(document.FS.Frage1_a.checked==false & document.FS.Frage1_b.checked==true & document.FS.Frage1_c.checked==false)
      {
        AW1 == true;
      }
      else
      {
        AW1 == false;
      }

    könntest du auch gleich das schreiben:

    AW1 = document.FS.Frage1_a.checked==false && document.FS.Frage1_b.checked==true && document.FS.Frage1_c.checked==false;

    (Beachte bitte auch die && statt der einfachen & und das einfache
    Gleichheitszeichen für die Zuweisung! Du solltest dich dringend
    nochmal in die Grundlagen von JavaScript einlesen!)

    Gruß
    Slyh

    --
    Es gibt 10 Arten von Menschen. Solche, die das Binärsystem verstehen, und solche, die es nicht verstehen.
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:} va:} de:] zu:) fl:( ss:) ls:/ js:|
    1. HAllo

      Mit dem && das is mir bekannt, aber als ich das zuerst geschrieben hatte hab ich nen scriptfehler bekommen.
      dann hatte ichs auf & geändert udn dann gings erstmal soweit...

      1. hi,

        Mit dem && das is mir bekannt, aber als ich das zuerst geschrieben hatte hab ich nen scriptfehler bekommen.
        dann hatte ichs auf & geändert udn dann gings erstmal soweit...

        dir ist also die richtige notation bekannt, und wenn trotz dieser irgendwo anders ein fehler auftritt, dann machst du aus dieser richtigen notation eine andere, falsche ... was ist denn das für eine denkweise?

        gruss,
        wahsaga

  4. <script>

    da fehlt das type attribut.

    function Auswertung()
    {
    // Variablen
    var AW1  = false;
    var AW2  = false;
    var AW3  = false;
    var AW4  = false;
    var AW5  = false;
    var AW6  = false;
    var AW7  = false;
    var AW8  = false;
    var AW9  = false;
    var AW10 = false;

    du kennst arrays?
    http://selfhtml.teamone.de/javascript/objekte/array.htm

    Allerdings ist das Array überflüssig.

    Du solltes es eher so machen:

    1. die richtigen Antworten in einem Array speichern:
    Zum Beispiel (ich hab deinen Quelltext nicht durchgelesen und weiss nicht welcher Antworten wirklich richtig sind):

    var AW = new Array('a', 'b' , 'b', 'c', 'a' ..... );

    und die Auswertung dann etwa so:

    var form = document.FS;
    var count = 0;

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

    var feld = form['Frage' + i];
    for(var j = 0; feld.length; j++)
         if( feld[j].checked && feld[j].value == AW[i]) count++;

    }

    if(count == AW.length) alert('bestanden') else alert('durchgefallen');

    Der HTML Quelltext einer Frage müßte dann in etwa so aussehen:

    <h5>Frage 6</h5>
    Sie bemerken im Augenwinkel, daß ein Harley-Fahrer mit seiner erstzugelassenen Maschine am Straßenrand stehengeblieben ist. Wie verhalten Sie sich ?

    <input type="Checkbox" id="Frage1" value="a" class="Check">
         Ich bremse sofort. Diese 4 KM fahre ich gerne zurück und helfe ihm.
    <br>
    <input type="Checkbox" id="Frage1" value="b" class="Check">
         Ich helfe keinen Harley-Fahrern
    <br>
    <input type="Checkbox" id="Frage1" value="c" class="Check">
         Ich melde den Vorfall dem Forstamt

    Das ist nur grob das Gerüst du müßtest es noch verfeinern.

    Struppi.

  5. Ich hab den fehler gefunden!

    bei der abfrage für frage 5, hatte ich bei 5 b das .checked vergessen.