2015-04-02 76 views
0

嗨,所以我有一個非常基本的JavaScript HTML測驗工作,但是我想最終是一個評估類型的測驗,可以說基於3類15個問題(如酒精中毒,抑鬱症,藥物濫用)例如HTML Javascript自我評估問卷/問卷

你多久喝一次酒? - 所有的時間 - 偶爾 - 從未

玩家回答所有15個問題,並在年底這取決於他們是如何回答的問題,他們會被分配例如一個類別你的類別是藥物濫用等

我在想,也許每個類別都有自己的計數器,並將值應用於每個可能的答案,例如,所有時間都給出3分,偶爾得2分等。當玩家回答問題時,將值存儲在相應的類別中,並且最後將每個類別的分數相加,得分最高的類別得到分配給玩家?

任何幫助,將不勝感激:)

HTML:

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
<h2 id="test_status"></h2> 
<div id="test"></div> 
</body> 
</html> 

CSS:

<style> 
div#test { 

    border:#000 1px solid; 
    padding: 10px 40px 40px 40px; 
} 
</style> 

JS:

<script> 
var pos = 0, test, test_status, question, choice, choices, chA, chB, chC, correct = 0; 
var questions = [ 
    ["How often do you drink?", "All the time", "Often", "Never", "B"], 
    ["Do you ever feel sad for no reason?", "All the time", "Often", "Never", "C"], 
    ["Have you ever tried drugs", "All the time", "Often", "Never", "C"], 
    ["Do you feel uneasy around people", "All the time", "Often", "Never", "C"] 


]; 

function _(x) { 

    return document.getElementById(x); 

} 

function renderQuestion() { 

    test = _("test"); 
    if(pos >= questions.length) { 
    test.innerHTML = "<h2>Your Category is </h2>"; 
    _("test_status").innerHTML = "Test Completed"; 
    pos = 0; 
    correct = 0; 
    return false; 
    } 



    _("test_status").innerHTML = "Question "+(pos+1)+" of"+questions.length; 
    question = questions[pos] [0]; 
    chA = questions[pos] [1]; 
    chB = questions[pos] [2]; 
    chC = questions[pos] [3]; 
    test.innerHTML = "<h3>"+question+"</h3>"; 
    test.innerHTML += "<input type='radio' name='choices' value='A'> "+chA+"<br>"; 
    test.innerHTML += "<input type='radio' name='choices' value='B'> "+chB+"<br>"; 
    test.innerHTML += "<input type='radio' name='choices' value='C'> "+chC+"<br><br>"; 
    test.innerHTML +="<button onclick='checkAnswer()'>submit Answer</button>"; 
    } 

    function checkAnswer() { 
    choices = document.getElementsByName("choices"); 
    for (var i=0; i<choices.length; i++) { 
    if(choices[i].checked) { 
     choice = choices[i].value; 
    } 
    } 
    if(choice == questions[pos] [4]) { 
    correct++; 
    } 
    pos++; 
    renderQuestion(); 
    } 
    window.addEventListener("load", renderQuestion, false); 
</script> 
+1

你有一個編程的問題,或者這是對邏輯,你的問卷? – 2015-04-02 15:46:23

+0

我試圖找出我將如何去編碼我上面提到的..或者如果任何人有更好的解決方案 – TryingAtCode 2015-04-02 15:48:35

回答

0

可執行的JavaScript代碼段將其產生的通過TypeScript(在此bucket上有一個公共GIT存儲庫),其測驗由參數和類別組織;下面你可以看到UML圖。

enter image description here

var __extends = this.__extends || function (d, b) { 
 
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 
 
    function __() { this.constructor = d; } 
 
    __.prototype = b.prototype; 
 
    d.prototype = new __(); 
 
}; 
 
var Categories; 
 
(function (Categories) { 
 
    var QuestionCategory = (function() { 
 
     function QuestionCategory(value) { 
 
      this.Value = value; 
 
     } 
 
     return QuestionCategory; 
 
    })(); 
 
    Categories.QuestionCategory = QuestionCategory; 
 
    var AQuestionCategory = (function (_super) { 
 
     __extends(AQuestionCategory, _super); 
 
     function AQuestionCategory() { 
 
      _super.call(this, 1); 
 
     } 
 
     return AQuestionCategory; 
 
    })(QuestionCategory); 
 
    Categories.AQuestionCategory = AQuestionCategory; 
 
    var BQuestionCategory = (function (_super) { 
 
     __extends(BQuestionCategory, _super); 
 
     function BQuestionCategory() { 
 
      _super.call(this, 2); 
 
     } 
 
     return BQuestionCategory; 
 
    })(QuestionCategory); 
 
    Categories.BQuestionCategory = BQuestionCategory; 
 
    var CQuestionCategory = (function (_super) { 
 
     __extends(CQuestionCategory, _super); 
 
     function CQuestionCategory() { 
 
      _super.call(this, 3); 
 
     } 
 
     return CQuestionCategory; 
 
    })(QuestionCategory); 
 
    Categories.CQuestionCategory = CQuestionCategory; 
 
})(Categories || (Categories = {})); 
 
var Questions; 
 
(function (Questions) { 
 
    var Answer = (function() { 
 
     function Answer(text, value) { 
 
      this.Text = text; 
 
      this.Value = value; 
 
     } 
 
     return Answer; 
 
    })(); 
 
    Questions.Answer = Answer; 
 
    var Question = (function() { 
 
     function Question(text, id, category, answers) { 
 
      this.Text = text; 
 
      this.ID = id; 
 
      this.Category = category; 
 
      this.Answers = answers; 
 
     } 
 
     Question.prototype.Render = function() { 
 
      var _this = this; 
 
      var dContainer = document.createElement("div"); 
 
      var dQuestion = document.createElement("h3"); 
 
      dQuestion.innerHTML = this.Text; 
 
      dContainer.appendChild(dQuestion); 
 
      var dCategory = document.createElement("div"); 
 
      dCategory.innerHTML = 'Category: ' + this.Category.Value; 
 
      dContainer.appendChild(dCategory); 
 
      dContainer.appendChild(document.createElement("br")); 
 
      var counter = 0; 
 
      this.Answers.forEach(function (a) { 
 
       var __id = _this.ID + counter; 
 
       var dRadio = document.createElement("input"); 
 
       dRadio.setAttribute('type', 'radio'); 
 
       dRadio.setAttribute('id', __id); 
 
       dRadio.setAttribute('data-category', _this.Category.Value + ''); 
 
       dRadio.setAttribute('value', a.Value + ''); 
 
       dRadio.setAttribute('name', _this.ID); 
 
       var dLabel = document.createElement("label"); 
 
       dLabel.innerHTML = a.Text; 
 
       dLabel.setAttribute('For', __id); 
 
       dContainer.appendChild(dRadio); 
 
       dContainer.appendChild(dLabel); 
 
       counter++; 
 
      }); 
 
      dContainer.appendChild(document.createElement("hr")); 
 
      return dContainer; 
 
     }; 
 
     return Question; 
 
    })(); 
 
    Questions.Question = Question; 
 
    var QuestionCollection = (function() { 
 
     function QuestionCollection(questions) { 
 
      this.Questions = questions; 
 
     } 
 
     QuestionCollection.prototype.Render = function() { 
 
      var div = document.createElement("div"); 
 
      this.Questions.forEach(function (q) { 
 
       div.appendChild(q.Render()); 
 
      }); 
 
      return div; 
 
     }; 
 
     return QuestionCollection; 
 
    })(); 
 
    Questions.QuestionCollection = QuestionCollection; 
 
    var QuestionArgument = (function() { 
 
     function QuestionArgument(name, collection) { 
 
      this.Collection = collection; 
 
      this.Name = name; 
 
     } 
 
     QuestionArgument.prototype.Render = function() { 
 
      var div = document.createElement("div"); 
 
      var h1Arg = document.createElement("h1"); 
 
      h1Arg.innerHTML = this.Name; 
 
      div.appendChild(h1Arg); 
 
      div.appendChild(document.createElement("hr")); 
 
      div.appendChild(this.Collection.Render()); 
 
      return div; 
 
     }; 
 
     return QuestionArgument; 
 
    })(); 
 
    Questions.QuestionArgument = QuestionArgument; 
 
    var QuizManager = (function() { 
 
     function QuizManager(hook, arguments) { 
 
      this.Arguments = arguments; 
 
      this.Hook = hook; 
 
     } 
 
     QuizManager.prototype.Render = function() { 
 
      var _this = this; 
 
      this.Arguments.forEach(function (arg) { 
 
       _this.Hook.appendChild(arg.Render()); 
 
      }); 
 
      var btn = document.createElement('input'); 
 
      btn.setAttribute('type', 'button'); 
 
      btn.setAttribute('value', 'Done'); 
 
      btn.onclick = function (e) { 
 
       _this.Compute(); 
 
      }; 
 
      this.Hook.appendChild(btn); 
 
     }; 
 
     QuizManager.prototype.Compute = function() { 
 
      var _this = this; 
 
      var cats = [], dxCat = [], dxCatTotValue = []; 
 
      this.Arguments.forEach(function (arg) { 
 
       arg.Collection.Questions.forEach(function (q) { 
 
        if (cats.length > 0) { 
 
         if (cats.indexOf(q.Category) === -1) 
 
          cats.push(q.Category); 
 
        } 
 
        else 
 
         cats.push(q.Category); 
 
       }); 
 
      }); 
 
      cats.forEach(function (c) { 
 
       var p = document.querySelectorAll('input[data-category =\'' + c.Value + '\']:checked'); 
 
       var tv = 0; 
 
       for (var i = 0; i < p.length; i++) { 
 
        if (parseInt(p[i]['value']) != NaN) 
 
         tv += parseInt(p[i]['value']); 
 
       } 
 
       dxCatTotValue.push({ "Cat": c.Value, "TVal": tv }); 
 
      }); 
 
      
 
      this.Hook.appendChild(document.createElement("hr")); 
 
      var summariH2 = document.createElement("h2"); 
 
      summariH2.innerHTML = 'Summary'; 
 
      dxCatTotValue.sort(this.Compare); 
 
      dxCatTotValue.forEach(function (catValue) { 
 
       var entryDiv = document.createElement("div"); 
 
       entryDiv.innerHTML = 'Category ' + catValue['Cat'] + ': ' + catValue['TVal']; 
 
       _this.Hook.appendChild(entryDiv); 
 
      }); 
 
      this.Hook.appendChild(document.createElement("hr")); 
 
     }; 
 
     QuizManager.prototype.Compare = function (a, b) { 
 
      if (a['TVal'] > b['TVal']) 
 
       return -1; 
 
      if (a['TVal'] < b['TVal']) 
 
       return 1; 
 
      return 0; 
 
     }; 
 
     return QuizManager; 
 
    })(); 
 
    Questions.QuizManager = QuizManager; 
 
})(Questions || (Questions = {})); 
 
window.onload = function() { 
 
    var CCat = new Categories.CQuestionCategory(); 
 
    var BCat = new Categories.BQuestionCategory(); 
 
    var ACat = new Categories.AQuestionCategory(); 
 
    var q1 = new Questions.Question('Do you eat Apples?', 'q1', CCat, [new Questions.Answer('All the time', 1), new Questions.Answer('Occasionally', 2), , new Questions.Answer('Never', 3)]); 
 
    var q2 = new Questions.Question('Do you like Pears?', 'q2', BCat, [new Questions.Answer('Yes', 1), new Questions.Answer('No', 2)]); 
 
    var fruitsquestions = new Questions.QuestionCollection([q1, q2]); 
 
    var fruitsArguments = new Questions.QuestionArgument('Fruits', fruitsquestions); 
 
    var q3 = new Questions.Question('Do you eat Onions?', 'q3', ACat, [new Questions.Answer('Yes', 1), new Questions.Answer('No', 2)]); 
 
    var q4 = new Questions.Question('Do you like Cucumbers?', 'q4', CCat, [new Questions.Answer('All the time', 1), new Questions.Answer('Occasionally', 2), , new Questions.Answer('Never', 3)]); 
 
    var vegetablesQuestions = new Questions.QuestionCollection([q3, q4]); 
 
    var vegetablesArguments = new Questions.QuestionArgument('Vegetables', vegetablesQuestions); 
 
    var quiz = new Questions.QuizManager(document.getElementById("content"), [fruitsArguments, vegetablesArguments]); 
 
    quiz.Render(); 
 
};
<div id="content"></div>

打字稿源:

module Categories { 
    export class QuestionCategory { 
    Value: number; 
    Text: string; 

    constructor(value: number) { this.Value = value; } 
    } 

    export class AQuestionCategory extends QuestionCategory { 
    constructor() { super(1); } 
    } 

    export class BQuestionCategory extends QuestionCategory { 
    constructor() { super(2); } 
    } 

    export class CQuestionCategory extends QuestionCategory { 
    constructor() { super(3); } 
    } 
} 

module Questions { 
    import QC = Categories; 

    export class Answer { 
    Text: string; 
    Value: number; 
    constructor(text: string, value: number) { 
     this.Text = text; 
     this.Value = value; 
    } 
    } 
    export class Question { 
    Category: QC.QuestionCategory; 
    Answers: Answer[]; 
    Text: string; 
    ID: string; 

    constructor(text: string, id: string, category: QC.QuestionCategory, answers: Answer[]) { 
     this.Text = text; 
     this.ID = id; 
     this.Category = category; 
     this.Answers = answers; 
    } 

    Render(): HTMLElement { 
     var dContainer = document.createElement("div"); 
     var dQuestion = document.createElement("h3") 
     dQuestion.innerHTML = this.Text; 
     dContainer.appendChild(dQuestion); 
     var dCategory = document.createElement("div") 
     dCategory.innerHTML = 'Category: ' + this.Category.Value; 
     dContainer.appendChild(dCategory); 
     dContainer.appendChild(document.createElement("br")); 
     var counter = 0; 
     this.Answers.forEach(a => { 
     var __id = this.ID + counter; 

     var dRadio = document.createElement("input"); 
     dRadio.setAttribute('type', 'radio'); 
     dRadio.setAttribute('id', __id); 
     dRadio.setAttribute('data-category', this.Category.Value + ''); 
     dRadio.setAttribute('value', a.Value + ''); 
     dRadio.setAttribute('name', this.ID); 

     var dLabel = document.createElement("label"); 
     dLabel.innerHTML = a.Text 
     dLabel.setAttribute('For', __id) 
     dContainer.appendChild(dRadio); 
     dContainer.appendChild(dLabel); 

     counter++; 
     }); 
     dContainer.appendChild(document.createElement("hr")); 
     return dContainer; 
    } 
    } 
    export class QuestionCollection { 

    Questions: Question[]; 
    constructor(questions: Question[]) { this.Questions = questions; } 
    Render(): HTMLElement { 
     var div = document.createElement("div"); 
     this.Questions.forEach(q => { 
     div.appendChild(q.Render()); 

     }); 
     return div; 
    } 

    } 
    export class QuestionArgument { 
    Name: string; 
    Collection: QuestionCollection; 

    constructor(name: string, collection: QuestionCollection) { 
     this.Collection = collection; 
     this.Name = name; 
    } 

    Render(): HTMLElement { 
     var div = document.createElement("div"); 
     var h1Arg = document.createElement("h1"); 
     h1Arg.innerHTML = this.Name; 
     div.appendChild(h1Arg); 
     div.appendChild(document.createElement("hr")); 
     div.appendChild(this.Collection.Render()); 
     return div; 
    } 
    } 

    export class QuizManager { 
    Hook: HTMLElement; 
    Arguments: QuestionArgument[]; 
    constructor(hook: HTMLElement, arguments: QuestionArgument[]) { 
     this.Arguments = arguments; 
     this.Hook = hook; 
    } 

    Render() { 
     this.Arguments.forEach(arg => { 
     this.Hook.appendChild(arg.Render()); 

     }); 

     var btn = <HTMLButtonElement> document.createElement('input'); 
     btn.setAttribute('type', 'button'); 
     btn.setAttribute('value', 'Done'); 
     btn.onclick = (e) => { this.Compute(); } 
     this.Hook.appendChild(btn); 
    } 
    Compute() { 
     var cats = [], dxCat = [], dxCatTotValue = []; 

     this.Arguments.forEach(arg => { 
     arg.Collection.Questions.forEach(q => { 
      if (cats.length > 0) { 
      if (cats.indexOf(q.Category) === -1) 
       cats.push(q.Category); 
      } 
      else 
      cats.push(q.Category); 

     }); 
     }); 
     cats.forEach(c => { 
     var p = document.querySelectorAll('input[data-category =\'' + c.Value + '\']:checked'); 
     var tv = 0; 
     for (var i = 0; i < p.length; i++) 
     { 
      if (parseInt(p[i]['value']) != NaN) 
      tv += parseInt(p[i]['value']); 

     } 
     dxCatTotValue.push({ "Cat": c.Value, "TVal": tv }); 

     }) 

     //this.Hook.appendChild(btn); 
     this.Hook.appendChild(document.createElement("hr")); 
     var summariH2 = document.createElement("h2"); 
     summariH2.innerHTML = 'Summary'; 

     dxCatTotValue.sort(this.Compare); 
     dxCatTotValue.forEach(catValue => { 
     var entryDiv = document.createElement("div"); 
     entryDiv.innerHTML = 'Category ' + catValue['Cat'] + ': ' + catValue['TVal']; 
     this.Hook.appendChild(entryDiv); 
     }); 

     this.Hook.appendChild(document.createElement("hr")); 

    } 

    Compare(a, b) { 
     if (a['TVal'] > b['TVal']) 
     return -1; 
     if (a['TVal'] < b['TVal']) 
     return 1; 
     return 0; 
    } 
    } 
} 

window.onload =() => { 
    var CCat = new Categories.CQuestionCategory(); 
    var BCat = new Categories.BQuestionCategory(); 
    var ACat = new Categories.AQuestionCategory(); 

    var q1 = new Questions.Question('Do you eat Apples?', 'q1', 
    CCat, 
    [new Questions.Answer('All the time', 1), new Questions.Answer('Occasionally', 2), , new Questions.Answer('Never', 3)]); 
    var q2 = new Questions.Question('Do you like Pears?', 'q2', 
    BCat, 
    [new Questions.Answer('Yes', 1), new Questions.Answer('No', 2)]); 

    var fruitsquestions = new Questions.QuestionCollection([q1, q2]); 
    var fruitsArguments = new Questions.QuestionArgument('Fruits', fruitsquestions); 


    var q3 = new Questions.Question('Do you eat Onions?', 'q3', 
    ACat, 
    [new Questions.Answer('Yes', 1), new Questions.Answer('No', 2)]); 

    var q4 = new Questions.Question('Do you like Cucumbers?', 'q4', 
    CCat, 
    [new Questions.Answer('All the time', 1), new Questions.Answer('Occasionally', 2), , new Questions.Answer('Never', 3)]); 

    var vegetablesQuestions = new Questions.QuestionCollection([q3, q4]); 
    var vegetablesArguments = new Questions.QuestionArgument('Vegetables', vegetablesQuestions); 

    var quiz = new Questions.QuizManager(document.getElementById("content"), [fruitsArguments, vegetablesArguments]); 
    quiz.Render(); 

}; 
0

quiz maker產生非常簡單的設置的HTML和其中總計算是爲了改變很明顯它。

您可以簡單地添加與每個答案有關的問題數量,然後比較哪個最大並顯示結果。它可以讓您選擇在每個問題的列表中單選按鈕,或者在一行中選擇多個按鈕。

所有的問題都會顯示在一個頁面上,而不是每次按Next都會讓人們在測驗中感到煩惱。沒有CSS是必要的,幾乎沒有任何JavaScript。

每個類型有1個問題(下拉框,簡答題,多答案等)的自我評分測驗示例代碼。上面鏈接中的生成器工具將創建類似的東西,它是純HTML和JavaScript,無需加載外部腳本,無需jquery或依賴項。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/EN" "http://www.w3.org/TR/html4/loose.dtd"> 
 
<html><head> 
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
<link rel="stylesheet" href="../../dkj.css" type="text/css"> 
 
<title>Quiz: Sample "Think Again" Quiz</title> 
 
<script type="text/javascript"> 
 
<!-- 
 
var stuff = new Array (51) // maximum number of questions 
 
var answered = new Array (51) // processing inhibitor for guessers 
 
for(var i = 0; i<=50; i++){stuff[i]=0; answered[i]=0} //initialize arrays// --> </script> 
 

 
</head> 
 

 
<body bgcolor ="#ffff88" text="#000000" link="#000088" vlink="purple" alink="#880000" > 
 
<a name="top"></a> 
 
<p align='right'><font size=-1> 
 
Quiz created: 1999/1/31 
 
</font></p> 
 

 

 
<center> 
 
<h2><font color="#ff3333">Sample "Think Again" Quiz</font></h2></center> 
 

 
<noscript> 
 
<p><font color="#880000"> 
 
I'm sorry. This page requires that your browser be capable of running JavaScript in order to use the self-correcting feature of the quiz. 
 
In most browsers you can activate JavaScript using a dialog box somewhere under one of the menu bar options. If you are really using a (rare) non-JavaScript-capable browser, you will have to do without the self-grading features of this page.</font></p> 
 
</noscript> 
 

 
<p> 
 
<b>Instructions: </b> 
 
Answer the multiple choice questions, guessing if necessary, 
 
then click on the "Process Questions" button to see your 
 
score. The program will not reveal which questions you got wrong, only how 
 
many points you have. Go back and change your answers until you get them all 
 
right. (The message box will rejoice at that point and the page will change color in delight.)</p> 
 

 
<p> 
 
<b>Points to note: </b> 
 

 
(1)&nbsp;Questions with only one possible answer are one point each. 
 
(2)&nbsp;Questions with <i>one or more</i> possible answers (represented by check boxes) 
 
give a point for each correct answer, but also subtract a point for each wrong answer! 
 
(3)&nbsp;The program will not attempt to score your efforts at all if 
 
you have not tried at least half of the questions. 
 
(4)&nbsp;This practice quiz is for your own use only. 
 
No record of your progress is kept or reported to anyone. </p> 
 
<hr> 
 

 
<form name="formzSampQuiz"> 
 

 
1. Fog is notorious in 
 
<blockquote> 
 
<input type=radio name=quest1 onClick="stuff[1]=0; answered[1]=1">New York&nbsp; 
 
<input type=radio name=quest1 onClick="stuff[1]=0; answered[1]=1">Chicago&nbsp; 
 
<input type=radio name=quest1 onClick="stuff[1]=1; answered[1]=1">London&nbsp; 
 
<input type=radio name=quest1 onClick="stuff[1]=0; answered[1]=1">Los Angeles&nbsp; 
 
<input type=radio name=quest1 checked onClick="stuff[1]=0; answered[1]=0">No Answer </blockquote> 
 

 
2. Chicago is in 
 
<blockquote> 
 
<input type=radio name=quest2 onClick="stuff[2]=0; answered[2]=1">Montana&nbsp; 
 
<input type=radio name=quest2 onClick="stuff[2]=0; answered[2]=1">Manitoba&nbsp; 
 
<input type=radio name=quest2 onClick="stuff[2]=0; answered[2]=1">Missouri&nbsp; 
 
<input type=radio name=quest2 onClick="stuff[2]=1; answered[2]=1">Illinois&nbsp; 
 
<input type=radio name=quest2 checked onClick="stuff[2]=0; answered[2]=0">No Answer </blockquote> 
 

 
3. The famous French Queen Marie Antoinette was married to 
 
<blockquote> 
 
<select name=quest3 size=1 onChange="figureout3()"><option selected>No Answer <option>St. Louis 
 
<option>Louis XVI 
 
<option>Louis DXLVIII 
 
<option>Louis Rukeyser 
 
<option>Louey, brother of Dewey and and Huey 
 
<option>John L. Louis 
 
</select> 
 

 
<script type="text/javascript"><!-- //Pre-processor for question 3"; 
 
function figureout3() { 
 
if (document.formzSampQuiz.quest3.options.selectedIndex == 0) 
 
    {stuff[3] = 0; answered[3]=0} // no answer 
 
else if (document.formzSampQuiz.quest3.options.selectedIndex == 2) 
 
    {stuff[3] = 1; answered[3]=1} // right answer 
 
else {stuff[3] = 0; answered[3]=1} // wrong answer 
 
} // end function figureout3() 
 
//--></script> 
 

 
</blockquote> 
 

 
4. Compared with Elizabeth II, Elizabeth I was 
 
<blockquote> 
 
<input type=radio name=quest4 onClick="stuff[4]=1; answered[4]=1">earlier&nbsp; 
 
<input type=radio name=quest4 onClick="stuff[4]=0; answered[4]=1">later&nbsp; 
 
<input type=radio name=quest4 checked onClick="stuff[4]=0; answered[4]=0">No Answer </blockquote> 
 

 
5. Which of the Following are saints? 
 
<blockquote> 
 

 
<script type="text/javascript"> 
 
<!-- //Script to pre-process question 5 
 
function figureout5() { 
 
stuff[5]=0; answered[5]=0 
 
if(document.formzSampQuiz.q5p2.checked==true){stuff[5]--; answered[5]=1} 
 
if(document.formzSampQuiz.q5p3.checked==true){stuff[5]++; answered[5]=1} 
 
if(document.formzSampQuiz.q5p4.checked==true){stuff[5]++; answered[5]=1} 
 
if(document.formzSampQuiz.q5p5.checked==true){stuff[5]--; answered[5]=1} 
 
if(document.formzSampQuiz.q5p6.checked==true){stuff[5]--; answered[5]=1} 
 
} //end function figure5 
 
// --></script> 
 
<input type=checkbox name="q5p2" onClick="figureout5()"> 
 
Jack-the-Ripper&nbsp; 
 
<input type=checkbox name="q5p3" onClick="figureout5()"> 
 
St. Augustine&nbsp; 
 
<input type=checkbox name="q5p4" onClick="figureout5()"> 
 
St. Ursula&nbsp; 
 
<input type=checkbox name="q5p5" onClick="figureout5()"> 
 
Adolf Hitler&nbsp; 
 
<input type=checkbox name="q5p6" onClick="figureout5()"> 
 
Napoleon&nbsp; 
 
</blockquote> 
 

 
6. Which of the following is <i>not</i> one of the Seven Deadly Sins? 
 
<blockquote> 
 
<select name=quest6 size=1 onChange="figureout6()"><option selected>No Answer <option>pride 
 
<option>lust 
 
<option>envy 
 
<option>stupidity 
 
<option>anger 
 
<option>covetousness 
 
<option>gluttony 
 
<option>sloth 
 
</select> 
 

 
<script type="text/javascript"><!-- //Pre-processor for question 6"; 
 
function figureout6() { 
 
if (document.formzSampQuiz.quest6.options.selectedIndex == 0) 
 
    {stuff[6] = 0; answered[6]=0} // no answer 
 
else if (document.formzSampQuiz.quest6.options.selectedIndex == 4) 
 
    {stuff[6] = 1; answered[6]=1} // right answer 
 
else {stuff[6] = 0; answered[6]=1} // wrong answer 
 
} // end function figureout6() 
 
//--></script> 
 

 
</blockquote> 
 
<script type="text/javascript"><!--// Processor for questions 1-6> 
 
function processqzSampQuiz() { 
 
document.bgColor='#ffff88' 
 
var goodguyszSampQuiz=0 // used to calculate score 
 
var inhibitzSampQuiz=0 // used to prevent processing of partially completed forms 
 

 
for (var i=1; i<=6; i++){ 
 
    goodguyszSampQuiz=goodguyszSampQuiz + stuff[i]; inhibitzSampQuiz = inhibitzSampQuiz + answered[i]; 
 
} // end for 
 

 
// Prevent display of score if too few questions completed 
 
if (inhibitzSampQuiz < 3){ 
 
    document.formzSampQuiz.grade.value="You must try at least 3!" 
 
    document.formzSampQuiz.score.value= "Secret!"; 
 
} // end if 
 

 
else { 
 
    document.formzSampQuiz.score.value=goodguyszSampQuiz; 
 
    if (goodguyszSampQuiz==7){ 
 
     document.formzSampQuiz.grade.value="Hooray!" 
 
     document.bgColor="#ff9999" 
 

 
    }else {document.formzSampQuiz.grade.value="Keep Trying!"} 
 
} // end else 
 
} // end function processqzSampQuiz() 
 

 
function killall(){ //keep final scores from hanging around after reset clears form 
 
goodguys=0; inhibitaa=0; 
 
for (i=0; i<=50; i++){stuff[i]=0; answered[i]=0} 
 
} // end functionl killall() 
 
// --> </script> 
 

 
<input type=button name=processor value="Process Questions" onClick=processqzSampQuiz()>&nbsp;<input type=reset value="Reset" onClick="killall(); document.bgColor='#ffff88'"> &nbsp; 
 
<input type=text name="grade" value="Nothing!" size=25 onFocus="blur()"> &nbsp; 
 
Points out of 7: 
 
<input type=text name="score" value="Zip!" size=10 onFocus="blur()"> 
 
<br></form> 
 

 
<p align='right'><font size=-1> 
 
<a href="#top">Return to top.</a></font></p> 
 
<hr> 
 
<!-- You can edit this acknowledgement out if you like. --> 
 
<p align='right'><font size=-1> 
 
This consummately cool, pedagogically compelling, self-correcting, <br> 
 
multiple-choice quiz was produced automatically from <br> 
 
a text file of questions using D.K. Jordan's<br> 
 
<a href="http://anthro.ucsd.edu/~dkjordan/resources/quizzes/quizzes.html"> 
 
Think Again Quiz Maker</a> <br> 
 
of October 31, 1998.<br> 
 

 
</font></p> 
 
</body></html>