Zufall funktioniert nicht

  • Guten Abend!

    Ich bin neu mit JavaScript und soll für die Schule eine Art Physik-Quiz erstellen in Form von Multiple Choice Fragen. Dafür möchte ich es erstmal hinbekommen, dass die 4 Antworten (1 richtige, 3 falsche) zufällig verteilt werden.

    Der Code der HTML-Datei: html-seminar.de/woltlab/attachment/1205/

    Der Code der .js-Datei: html-seminar.de/woltlab/attachment/1206/


    Das Ganze soll an sich so funktionieren: dem Spielenden wird eine Frage gestellt mit 4 Antwortmöglichkeiten, er wählt sich eine Möglichkeit zwischen 1 und 4 aus. Es sind ingesamt nur 3 Fragen, weswegen ich es in 3 Funktionen aufgeteilt habe, die die Fragestellung anzeigen, und dann jeweils eine dazugehörige Funktion, die die Eingabe überprüft. sol1, sol2 und sol3 sind die Indexe der richtigen Antworte für die Fragen 1, 2 und 3.


    Ausschnitt aus der .js-Datei:



    Und die Funktion, die momentan nicht funktionieren will. Die Antworten werden in Paragraphen angezeigt, die ich answer1 bis answer4 genannt habe. Um das ganze etwas zu erleichtern, habe ich die Bezeichnungen in einen Array gepackt. Die Eingabeparameter sind die richtige Antwort, 3 falsche Antworten und die Aufgabe, für die es berechnet wird, um den richtigen Lösungswert zu manipulieren und überflüssigen Code zu vermeiden. Zuerst wird die richtige Antwort zugewiesen, dann der Index aus dem Array der noch nicht besetzten Indizes rausgeschnitten. Die Zuweisung der falschen Antworten habe ich vorerst rausgelassen, um die wirkliche Logik der Funktion zum Laufen zu bekommen, aber es soll dann nach demselben Prinzip verlaufen: eine zufällige Zahl wird genommen, der Index wird herausgeschnitten, der Paragraph verändert.


    Ich würde mich um eine möglichst schnelle Antwort freuen!

  • Hallo,


    zum Einen hast Du ganz unten

    for(int

    verwendet; müsste

    for(var

    sein.


    Dann habe ich das Problem so gelöst:

    Statt

    Code
      for(var answerTMP in answers)  {
       document.getElementById(answerTMP).innerHTML="";
      }

    einfach

    Code
      for(var i=1; i<=4; i++)
      { 
       document.getElementById('answer'+i).innerHTML="";
      }

    damit kam ich weiter, hab's jetzt aber nur für die erste gemacht, die anderen sind ja gleich.


    Warum das so ist weiss ich nicht; da müssten dir die JS-Cracks was zu sagen können.

    edit: Vermutlich muss es foreach sein.


    Die Antworttexte werden wohl auch noch nicht richtig produziert, aber das dürfte ja leicht sein.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!