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:
var answers=["answer1","answer2","answer3","answer4"];
function randomDistribution(rightAnswer, wrongAnswer1, wrongAnswer2, wrongAnswer3, exercise){
var tmpIndex=[0,1,2,3];
var rightIndex=Math.floor(Math.random()*4);
tmpIndex.splice(rightIndex,1);
var nmb1=rightIndex+1;
switch(exercise){
case 1:
sol1=nmb1;
break;
case 2:
sol2=nmb1;
break;
case 3:
sol3=nmb1;
break;
}
document.getElementById(answers[rightIndex]).innerHTML=nmb1 + ". " + rightAnswer;
for(int i=0;i<3;++i){
var random=Math.floor(Math.random()*(3-i));
var indexTMP=tmpIndex[random];
tmpIndex.splice(random,1);
var nmb=random+1;
document.getElementById(answers[indexTMP]).innerHTML=nmb + ". " + random;
}
}
Alles anzeigen
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!