Quiz 1 Source Code

Using a MultiDimensional Array

// the answer arrays are contained in the external answers.js file
<
SCRIPT SRC="answers.js"></SCRIPT>

<SCRIPT>

function score(form) {
     var correct = 0;
     var incorrec = "";

     for (i = 1; i < answers.length + 1; i++) {
          var count = 0;
                 var numChecked = 0;

          for (j = 0; j < eval("form.Q" + i).length; j++) {
              var field =
eval("form.Q" + i )[j];

              if (field.checked) {
                    numChecked++;

                    for (k = 0; k < answers[i - 1].length; k++) {
                          if (field.value == answers[i - 1][k]) count++;
               }
          }

          if (numChecked != count) count = -1;

          if (count == eval("a" + i).length) correct++;
          else incorrec += "Q" + i + " ";
     }

     form.correct.value = correct;
     form.incorrec.value = incorrec;
}

function showAnswers(form) {
     for (i = 1; i < answers.length + 1; i++) {
          for (j = 0; j < eval('form.Q' + i).
length; j++) {
              var field = eval("form.Q" + i )[j];

               field.checked = false;

               for (k = 0; k < answers[i - 1].length; k++) {
                    if (field.value == answers[i - 1][k]) field.
checked = true
               }
          }
     }

     form.correct.value = "";
     form.incorrec.value = "";
}

</SCRIPT>

CONVENTIONS:

  • Question is 1 is named Q1 & Question 2 is named Q2, etc...
  • Qx are arrays, they use checkboxes or radio buttons
  • The values for the fields are a, b, c, d, e depending on the number fields

<FORM NAME="quiz">
<
OL>
    <
LI>if minutes = 9 & timeSt = ((minutes < 10) ? ":0" : ":") + minutes;
            Then timeSt equals</
LI>
        <
INPUT TYPE="radio" NAME="Q1" VALUE="a"> A. :0<BR>
        <
INPUT TYPE="checkbox" NAME="Q10" VALUE="c">C. 13v<BR>
        <
INPUT TYPE="checkbox" NAME="Q10" VALUE="d">D. A9</P>
</
OL>

You have: <INPUT TYPE="text" NAME="correct"> answers correct out of a possible ten.

The question numbers that were not correct are:
    <
INPUT button" VALUE="Show Answers" onClick="showAnswers(this.form)">
    <
INPUT TYPE="reset" VALUE="Reset">
</FORM>