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 in buildQuestion() with printResults().

  • 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, ...

Get JavaScript Application Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.