2016-11-20 13 views
-5

Also habe ich dieses Projekt für die Schule gestartet; Ich bin ein Anfänger in Javascript, wie Sie aus dem Code sehen können, und ich bin irgendwie fest. Zuallererst möchte ich ein Quiz machen, bei dem Sie die Menge der Fragen, die Sie beantworten wollen, vorstellen und dann auf sie antworten müssen. Für den Anfang wählte ich 7 Fragen mit zufälligen Antworten, um es zu testen. Das Problem ist, dass wenn ich 3 oder weniger Fragen zu beantworten, es funktioniert, aber wenn ich mehr (+3 < = 7) bekomme ich einen seltsamen Fehler: index.html? Fname = 3: 103 Uncaught TypeError: Kann nicht lesen Eigenschaft 'checked' von undefined (...). Hier ist mein Code:Javascript Kontrollkästchen Fehler

My code

Im sorry für distrubing Sie mit meiner Dummheit! Einen schönen Tag noch! PS: Ich habe vergessen zu erwähnen, dass dieser Code nicht fertig ist (ich muss es noch stylen), also verurteile mich nicht.

+0

Hallo Ciocirlan, Willkommen bei StackOverflow. Bitte geben Sie zusammen mit Ihrer Frage einen Ausschnitt relevanter Codes an. Codes in externen Links können ablaufen, wodurch der Thread für andere Stack-Benutzer mit einem ähnlichen Problem nutzlos wird. Prost –

+0

Ich fing gerade an, Stack zu benutzen und ich weiß, mein Schlechter. Ich werde lernen, wie diese Seite funktioniert. –

Antwort

0

In Zeile 68 Ihres Codes geben Sie y als die Anzahl der Fragen an, nach denen der Benutzer gefragt hat.

y=document.getElementById("myForm").elements[0].value; 

Diese Schleife (ab Zeile 102), wo der Fehler herkommt:

for(var i=0; i<y; i++){ 
    if(choices[i].checked){ 
     choice = choices[i].value; 
    } 
} 

Hier ist, was passiert: Wenn Sie für 4 Fragen stellen, wird diese Schleife halten, solange i läuft ist kleiner als 4. Wenn i 3 ist, versucht die if Anweisung auf choices[3].checked zuzugreifen. Denken Sie daran, choices[3] ist eigentlich das vierte Element im Array, da die Indizes bei 0 beginnen. Jede Frage hat nur 3 Auswahlmöglichkeiten. Wenn Sie also nach der vierten Frage fragen, erhalten Sie undefined.

Aber Sie wollen diese Schleife 3 und nur 3 Antworten für jede Frage zu sehen, unabhängig davon, wie viele Fragen es insgesamt gibt. Was Sie wahrscheinlich schreiben wollten, war folgendes:

for(var i=0; i<3; i++){ 
    if(choices[i].checked){ 
     choice = choices[i].value; 
    } 
} 
Verwandte Themen