Hallo,
Ik heb m.b.v. Javascript een webpagina gemaakt waarop de bezoeker een quiz speelt met meerkeuzevragen. Na het invullen van de vragen kun je op een knop 'Uitslag' klikken. Vervolgens wordt de pagina leeggemaakt (via window.open()) en verschijnt het aantal goede antwoorden met daaronder een overzicht van welke vragen je goed/fout hebt.
Deze pagina staat op
http://www.cs.vu.nl/~aeweber/quiztest.html
(Om de code eenvoudig te houden bestaat de quiz uit slechts 2 vragen en wordt er genummerd vanaf 0.)
Mijn probleem is: Met Internet Explorer werkt het precies zoals ik verwachtte, maar met Firefox gaat het mis zodra je op 'Uitslag' klikt. Het lijkt erop dat Firefox de variablen en de arrays niet meer kent zodra je window.open() doet....
Kan iemand mij hiermee helpen? Alvast bedankt.
Voor de volledigheid nog even de code:
<html>
<head>
<title>Quiz</title>
<script language="JavaScript">
<!--
// Aanmaak globale variabelen en arrays:
var aantalVragen = 2;
vragenArray = new Array(aantalVragen); // Hier komen de vragen als strings in.
vragenArray[0] = 'String Vraag 0?';
vragenArray[1] = 'String Vraag 1?';
aantalKeuzenPerVraag = new Array(3,2); // 3 keuzen voor vraag 0, 2 voor 1.
keuzenMatrix = new Array(aantalVragen); // Hier komen de keuzemogelijkheden in.
for (var i=0; i<aantalVragen; i++){
keuzenMatrix = new Array(aantalKeuzenPerVraag);
}
keuzenMatrix[0][0] = 'vraag 0 keuze 0';
keuzenMatrix[0][1] = 'vraag 0 keuze 1';
keuzenMatrix[0][2] = 'vraag 0 keuze 2';
keuzenMatrix[1][0] = 'vraag 1 keuze 0';
keuzenMatrix[1][1] = 'vraag 1 keuze 1';
correcteAntwoorden = new Array(0,1); // 0 is goede antwoord voor vraag 0, etc.
// Functie die formulier verwerkt:
function resultaat(form1){
// Aanmaak lokale variabelen en arrays:
var aantalPunten = 0;
gekozenAntwoorden = new Array(aantalVragen);
var ingevuld = 0;
// Verwerking van het formulier:
var k=0; // k loopt door alle radiobuttons van het formulier heen.
for (var i=0; i<aantalVragen; i++){
for (var j=0; j<aantalKeuzenPerVraag; j++){
if (form1.elements[k].checked){
gekozenAntwoorden = j;
ingevuld++;
if (j == correcteAntwoorden) aantalPunten++;
}
k++;
}
}
// Controle of alle vragen beantwoord zijn:
if(ingevuld != aantalVragen) alert('Je hebt nog niet alle vragen ingevuld!');
else{
// Uitvoer:
document.open();
document.write('<html><head><title>Uitslag</title><body>'
+ '<h3 align="center">Uitslag</h3>'
+ '<p align="center">Aantal behaalde punten is: ' + aantalPunten
+ ' van de ' + aantalVragen + '.<br><hr>'
+ '<p align="center"><table>');
for(var i=0; i<aantalVragen; i++){
document.write('<tr><td><table><tr><td>Jouw antwoord: </td><td><b>'
+ gekozenAntwoorden + '</b></td></tr>'
+ '<tr><td>Correcte antwoord: </td><td><b>'
+ correcteAntwoorden + '</b></td></tr></table></td></tr>');
}
document.write('</table></body></html>');
aantalPunten = 0;
ingevuld = 0;
document.close();
}
}
// -->
</script>
</head>
<body bgcolor="#FFCC99">
<h3 align="center">Quiz</h3>
<p>
<script language="JavaScript">
<!--
document.write('<form name="form1">');
for (var i=0; i<aantalVragen; i++){
document.write('<p><b>' + i + '.</b> ' + vragenArray + '<br>');
for (var j=0; j<aantalKeuzenPerVraag; j++){
document.write('<input type="radio" name="vraag' + i + '" value="' + j
+ '"> <b>' + j + '.</b> ' + keuzenMatrix[j] + '<br>');
}
}
document.write('<p><input type="button" value="Klik voor uitslag!" '
+ 'onClick="resultaat(this.form)">'
+ '</form>');
//-->
</script>
</body>
</html>
Ik heb m.b.v. Javascript een webpagina gemaakt waarop de bezoeker een quiz speelt met meerkeuzevragen. Na het invullen van de vragen kun je op een knop 'Uitslag' klikken. Vervolgens wordt de pagina leeggemaakt (via window.open()) en verschijnt het aantal goede antwoorden met daaronder een overzicht van welke vragen je goed/fout hebt.
Deze pagina staat op
http://www.cs.vu.nl/~aeweber/quiztest.html
(Om de code eenvoudig te houden bestaat de quiz uit slechts 2 vragen en wordt er genummerd vanaf 0.)
Mijn probleem is: Met Internet Explorer werkt het precies zoals ik verwachtte, maar met Firefox gaat het mis zodra je op 'Uitslag' klikt. Het lijkt erop dat Firefox de variablen en de arrays niet meer kent zodra je window.open() doet....
Kan iemand mij hiermee helpen? Alvast bedankt.
Voor de volledigheid nog even de code:
<html>
<head>
<title>Quiz</title>
<script language="JavaScript">
<!--
// Aanmaak globale variabelen en arrays:
var aantalVragen = 2;
vragenArray = new Array(aantalVragen); // Hier komen de vragen als strings in.
vragenArray[0] = 'String Vraag 0?';
vragenArray[1] = 'String Vraag 1?';
aantalKeuzenPerVraag = new Array(3,2); // 3 keuzen voor vraag 0, 2 voor 1.
keuzenMatrix = new Array(aantalVragen); // Hier komen de keuzemogelijkheden in.
for (var i=0; i<aantalVragen; i++){
keuzenMatrix = new Array(aantalKeuzenPerVraag);
}
keuzenMatrix[0][0] = 'vraag 0 keuze 0';
keuzenMatrix[0][1] = 'vraag 0 keuze 1';
keuzenMatrix[0][2] = 'vraag 0 keuze 2';
keuzenMatrix[1][0] = 'vraag 1 keuze 0';
keuzenMatrix[1][1] = 'vraag 1 keuze 1';
correcteAntwoorden = new Array(0,1); // 0 is goede antwoord voor vraag 0, etc.
// Functie die formulier verwerkt:
function resultaat(form1){
// Aanmaak lokale variabelen en arrays:
var aantalPunten = 0;
gekozenAntwoorden = new Array(aantalVragen);
var ingevuld = 0;
// Verwerking van het formulier:
var k=0; // k loopt door alle radiobuttons van het formulier heen.
for (var i=0; i<aantalVragen; i++){
for (var j=0; j<aantalKeuzenPerVraag; j++){
if (form1.elements[k].checked){
gekozenAntwoorden = j;
ingevuld++;
if (j == correcteAntwoorden) aantalPunten++;
}
k++;
}
}
// Controle of alle vragen beantwoord zijn:
if(ingevuld != aantalVragen) alert('Je hebt nog niet alle vragen ingevuld!');
else{
// Uitvoer:
document.open();
document.write('<html><head><title>Uitslag</title><body>'
+ '<h3 align="center">Uitslag</h3>'
+ '<p align="center">Aantal behaalde punten is: ' + aantalPunten
+ ' van de ' + aantalVragen + '.<br><hr>'
+ '<p align="center"><table>');
for(var i=0; i<aantalVragen; i++){
document.write('<tr><td><table><tr><td>Jouw antwoord: </td><td><b>'
+ gekozenAntwoorden + '</b></td></tr>'
+ '<tr><td>Correcte antwoord: </td><td><b>'
+ correcteAntwoorden + '</b></td></tr></table></td></tr>');
}
document.write('</table></body></html>');
aantalPunten = 0;
ingevuld = 0;
document.close();
}
}
// -->
</script>
</head>
<body bgcolor="#FFCC99">
<h3 align="center">Quiz</h3>
<p>
<script language="JavaScript">
<!--
document.write('<form name="form1">');
for (var i=0; i<aantalVragen; i++){
document.write('<p><b>' + i + '.</b> ' + vragenArray + '<br>');
for (var j=0; j<aantalKeuzenPerVraag; j++){
document.write('<input type="radio" name="vraag' + i + '" value="' + j
+ '"> <b>' + j + '.</b> ' + keuzenMatrix[j] + '<br>');
}
}
document.write('<p><input type="button" value="Klik voor uitslag!" '
+ 'onClick="resultaat(this.form)">'
+ '</form>');
//-->
</script>
</body>
</html>