Potential Extensions
This application can be modified in a number of ways. The two obvious extensions I see, however, are making it cheat-proof by performing the grading on the server, and changing the application to administer a survey instead of a test.
Making It Cheat-Proof
One of the first things you might have thought after tinkering with the application for a while is, “Users can check the answers by downloading and opening the JavaScript source file.” It would be a pain to go through each question and find the letter, but it can be done.
You can remove the “Peeping Tom” factor by simply not
sending the answers with the application and requiring the user to
submit his or her test results to a server for grading. We
won’t get into grading the test on the server, but it
won’t be much more involved than
gradeTest(). Maybe a little more involved, but the
principles will be the same.
To remove the grading feature and add the server-side submission feature, you’ll need to do the following:
Remove any data representing the answers from the object and array logic in
questions.js.Remove
gradeTest()and replace the call to it inbuildQuestion()withprintResults().Modify
printResults()so that the user can view his or her answers, and embed the answer data within an HTML form to send the waiting server.
Removing the answers from the array logic
Remove this.answer and
this.support from the question constructor in
question.js. Change this:
function question(answer, support, question, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access