minicrispie: objekt erwartet :-(

Beitrag lesen

Hallo,

ok, dann nehmen wir das ding mal auseinander ...

»» function quiz()  

> {  
> x=-1

warum machst du hier -1? Hast du eine Begründung dafür?
Eigentlich alles in Programmiersprachen fängt mit der 0 an. So auch deine zwei arrays.

»» punkte=0  

> antwort= new Array("antwort1", "antwort2", "antwort3", "antwort4");  
> quest= new Array("frage1", "frage2", "frage3", "frage4");

Hier definierst du zwei Arrays mit jeweils 4 Elementen.

  

> do  
> {  
> x++;  
> answer=promt("quest[x]","")  
> if(answer==antwort[x])  
> {punkte++};  
> }  
> while (x<5);

Wenn du hier mal Computer spielst wird rauskommen:

 do  
 {  
  x++; //x=0  
  answer=promt("quest[x]",""); //quest[0]  
  if(answer==antwort[x]); //antwort[0]  
  {  
   punkte++; // = 1  
  }  
 }  
 while (x<5); // 0 kleiner gleich 5 --> true --> nächster durchlauf.

Wenn wir das immer weiter machen, sind wir hier:

 do  
 {  
  x++; //x=4  
  answer=promt("quest[x]",""); //quest[4]  
  if(answer==antwort[x]); //antwort[4]  
  {  
   punkte++;  
  }  
 }  
 while (x<5); // 4 kleiner 5 --> true --> nächster durchlauf.

Schon hier forderst du im Array ein 5tes Element, wo aber nur 4 gegeben sind. Die Zählung von Arrays beginnt aber ab 0. Also 0, 1, 2, 3. Mehr gibst du nicht vor.
Im Nächsten durchlauf hast du das gleiche Problem mit der 5.

//-->

Kommentare sind in der heutigen Welt nicht mehr nötig.

Zu deinem Codingstyle:
Achte auf richtige Einrückung. umso Besser wirst du später Fehler finden und beheben können.
Jede Verschachtelung und jeder Befehl müssen eingerückt werden.
Desweiteren bietet JavaScript zwar die Möglichkeit, die Semikolons am Ende eines Befehles wegzulassen, aber setze sie trotzdem. Sowas ist unsauber.

MfG. Christoph Ludwig

--
Wo die Sprache aufhört, fängt die Musik an...
Selfcode:  sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
Go to this