Hallo merul,
vielleicht verstehe ich ja deinen Code nicht, aber hier
for (var i = 0; i < Kombination[n].length; i++){ var antw = Fragen[Kombination[i]][1]; // die richtige Antwort wird gesichert, bevor die Antworten gemischt werden. var frage = Fragen[Kombination[i]].shift(); // das erste
> läuft i von 0 bis Kombination[n].length - 1, du benutzt es dann aber als Index von Kombination. Hat Kombination so viele Elemente, wie Kombination[n]?
>
> Gruß, Jürgen
Hallo Jürgen,
Ja, da hast du recht, da fehlt was. ^^ Vielen Dank für den Hinweis! Das ist durch die Änderung der Variablennamen geschehen, die ich für das Forum vorgenommen habe, um es etwas verständlicher zu machen. Richtig ist die Funktion deshalb wie folgt:
~~~javascript
function fragen(n) { // n ist die Nr. des Fragebogens und wird bei Aufruf übergeben
Kombination[n].shuffle(); // "shuffle()" (s. unten. Bei mir auf dem Rechner ist's vor dieser Funktion.) ist aus dem Inet gesucht, um die Elemente des Arrays, also die Fragen der Fragebögen, zu mischen.
document.write("<form name=\"Fragebogen\" action=\"\">\n");
for (var i = 0; i < Kombination[n].length; i++){
var antw = Fragen[Kombination[n][i]][1]; // die richtige Antwort wird gesichert, bevor die Antworten gemischt werden.
var frage = Fragen[Kombination[n][i]].shift(); // das erste Element, also die Frage, wird entfernt und "frage" übergeben, damit die Antworten gemischt werden können.
Fragen[Kombination[n][i]].shuffle(); // die Antworten werden gemischt.
document.write("<p>" + (i+1) + ". " + frage + "<br><br>\n");
for (var k = 0; k < 4; k++) { // es gibt immer genau vier Antworten.
document.write("<input type=\"radio\" name=\"Frage_" + (i+1) + "\" value=\"");
if (Fragen[Kombination[n][i]][k] == antw)
{document.write("1");}
else {document.write("0");}; // unterschiedliche values dienen der Auswertung (1 steht für richtige Antwort.)
document.write("\">" + Fragen[Kombination[n][i]][k] + "<br>\n");
};
document.write("</p><br>\n");
};
document.write("<input type=\"button\" name=\"Auswertung\" value=\"Auwertung\" onclick=\"auswertung();\">\n<\/form>");
return true;
}
Das produziert allerdings den im Ausgangspost schon beschriebenen Fehler. :/
Viele Grüße
merul