سلام من این کد رو برای ساختن یک آزمون ساز پیدا کردم
از ویژگی های این کد اینه که می تونه از بین 20 تا سوال 10 تا رو به صورت رندم انتخاب کنه
حالا خواهشمندم دو تا کمک به من بکنید
1- بعد از اینکه دکمه ارسال رو زدیم پاسخ های صحیح سبز بشن و پاسخ های غلط قرمز و روبروی پاسخ های غلط جواب صحیح نمایش داده بشه
2- گزینه ها به صورت کلید رادیویی بشن نه لیست کشویی
JavaScript Code:
<html><head><script type="text/JavaScript"> function Questions(divname) { this.QText = new Array(20); // The questions this.QAnswer = new Array(20); // The correct answers this.QChoice = new Array(80); // The possible multi-choice values this.thisAns = new Array(10); // The answers for this page this.Answer = new Array(10); // The user's answers this.anchor = document.getElementById(divname); // OK, set the questions this.QText[0] = "What is the capital of Norway"; this.QText[1] = "What is the capital of Hungary"; this.QText[2] = "What is the capital of Cyprus"; this.QText[3] = "What is the capital of Libya"; this.QText[4] = "What is the capital of Kenya"; this.QText[5] = "What is the capital of Nigeria"; this.QText[6] = "What is the capital of Columbia"; this.QText[7] = "What is the capital of Barbados"; this.QText[8] = "What is the capital of Australia"; this.QText[9] = "What is the capital of Pakistan"; this.QText[10] = "What is the capital of Spain"; this.QText[11] = "What is the capital of England"; this.QText[12] = "What is the capital of Ireland"; this.QText[13] = "What is the capital of Sweden"; this.QText[14] = "What is the capital of Denmark"; this.QText[15] = "What is the capital of Poland"; this.QText[16] = "What is the capital of Italy"; this.QText[17] = "What is the capital of India"; this.QText[18] = "What is the capital of Canada"; this.QText[19] = "What is the capital of Portugal"; // Now, set the possible choices this.QChoice[0] = "Bergen"; this.QChoice[1] = "Trondheim"; this.QChoice[2] = "Oslo"; this.QChoice[3] = "Haugesund"; this.QChoice[4] = "Warsaw"; this.QChoice[5] = "Budapest"; this.QChoice[6] = "Bucharest"; this.QChoice[7] = "Viea"; this.QChoice[8] = "Crete"; this.QChoice[9] = "Nicosia"; this.QChoice[10] = "Athens"; this.QChoice[11] = "Saloniki"; this.QChoice[12] = "Tehran"; this.QChoice[13] = "Cairo"; this.QChoice[14] = "Tripoli"; this.QChoice[15] = "Baghdad"; this.QChoice[16] = "Nairobi"; this.QChoice[17] = "Mombasa"; this.QChoice[18] = "Zanzibar"; this.QChoice[19] = "Kampala"; this.QChoice[20] = "Laos"; this.QChoice[21] = "Harare"; this.QChoice[22] = "Douala"; this.QChoice[23] = "Lagos"; this.QChoice[24] = "Bogota"; this.QChoice[25] = "Cali"; this.QChoice[26] = "Medellin"; this.QChoice[27] = "Panama"; this.QChoice[28] = "Havana"; this.QChoice[29] = "Bridgetown"; this.QChoice[30] = "Kingston"; this.QChoice[31] = "Montego Bay"; this.QChoice[32] = "Sydney"; this.QChoice[33] = "Brisbane"; this.QChoice[34] = "Melboue"; this.QChoice[35] = "Canberra"; this.QChoice[36] = "Kabul"; this.QChoice[37] = "Karachi"; this.QChoice[38] = "Islamabad"; this.QChoice[39] = "New Delhi"; this.QChoice[40] = "Bergen"; this.QChoice[41] = "Madrid"; this.QChoice[42] = "Oslo"; this.QChoice[43] = "Haugesund"; this.QChoice[44] = "London"; this.QChoice[45] = "Budapest"; this.QChoice[46] = "Bucharest"; this.QChoice[47] = "Viea"; this.QChoice[48] = "Crete"; this.QChoice[49] = "Dublin"; this.QChoice[50] = "Athens"; this.QChoice[51] = "Saloniki"; this.QChoice[52] = "Tehran"; this.QChoice[53] = "Stockholm"; this.QChoice[54] = "Tripoli"; this.QChoice[55] = "Baghdad"; this.QChoice[56] = "Nairobi"; this.QChoice[57] = "Mombasa"; this.QChoice[58] = "Copenhagen"; this.QChoice[59] = "Kampala"; this.QChoice[60] = "Warsaw"; this.QChoice[61] = "Harare"; this.QChoice[62] = "Douala"; this.QChoice[63] = "Lagos"; this.QChoice[64] = "Bogota"; this.QChoice[65] = "Cali"; this.QChoice[66] = "Medellin"; this.QChoice[67] = "Rome"; this.QChoice[68] = "New Delhi"; this.QChoice[69] = "Bridgetown"; this.QChoice[70] = "Kingston"; this.QChoice[71] = "Montego Bay"; this.QChoice[72] = "Sydney"; this.QChoice[73] = "Brisbane"; this.QChoice[74] = "Ottawa"; this.QChoice[75] = "Canberra"; this.QChoice[76] = "Kabul"; this.QChoice[77] = "Karachi"; this.QChoice[78] = "Islamabad"; this.QChoice[79] = "Lisbon"; // Set the correct answers this.QAnswer[0] = 3; this.QAnswer[1] = 2; this.QAnswer[2] = 2; this.QAnswer[3] = 3; this.QAnswer[4] = 1; this.QAnswer[5] = 4; this.QAnswer[6] = 1; this.QAnswer[7] = 2; this.QAnswer[8] = 4; this.QAnswer[9] = 3; this.QAnswer[10] = 3; // these answers are wrong - check them yourself! this.QAnswer[11] = 2; this.QAnswer[12] = 2; this.QAnswer[13] = 3; this.QAnswer[14] = 1; this.QAnswer[15] = 4; this.QAnswer[16] = 1; this.QAnswer[17] = 2; this.QAnswer[18] = 4; this.QAnswer[19] = 3; } Questions.prototype.generateQuiz = function() { var QCount = 0; var QNumber = 0; // Initialise the "questions available" table var QUsed = new Array(20); for (QCount=0; QCount<20; QCount++) { QUsed[QCount] = 1; // Marked as available } // Delete any existing questions //this.nukeExistingQuiz(); this.anchor.ierHTML = ""; var HTMLBlob = "<table>"; // Build up the questions for (QCount=0; QCount<10; ) { QNumber = Math.floor(20 * Math.random()); if (1 == QUsed[QNumber]) { // Still available? HTMLBlob += this.AddQuestion(QNumber, QCount); QCount++; QUsed[QNumber] = 0; // Marked as unavailable } } HTMLBlob += "</table>"; this.anchor.ierHTML = HTMLBlob; } // This removes any existing quiz on the page Questions.prototype.nukeExistingQuiz = function() { if (null != this.anchor && null != this.anchor.childCount) { while (this.anchor.childCount > 0) { this.anchor.removeChild(this.anchor.childNodes[0]); } } } // Add this to the DOM Questions.prototype.AddQuestion = function(QNum, EntryNum) { // This is really naughty: you should use DOM stuff, and not // non-standard ierHtml ... var Ix; var HTMLBlob = "<tr><td><input type="checkbox" id="check" + EntryNum + "" checked="checked"></td><td>" + "Question #" + QNum + ":</td><td>" + "<strong>" + this.QText[QNum] + "</strong></td><td><select id="answer" + EntryNum + "" size="1">" + "<option selected="selected" value="0">-- Select an answer --</option>" for (Ix=0; Ix<4; Ix++) { HTMLBlob = HTMLBlob + "<option value="" + Ix + "">" + this.QChoice[QNum*4+Ix] + "</option>"; } HTMLBlob = HTMLBlob + "</select></td></tr>"; this.thisAns[EntryNum] = this.QAnswer[QNum]; retu HTMLBlob; } // Verify that all questions have been answered Questions.prototype.AreQuestionsAnswered = function() { var unanswered = 0; for (var Ix=0; Ix<10; Ix++) { this.Answer[Ix] = document.getElementById("answer" + Ix).selectedIndex; if (this.Answer[Ix] == 0) { unanswered++; } } retu unanswered; } // Score the results Questions.prototype.ScoreIt = function() { var count = this.AreQuestionsAnswered(); if (count > 0) { alert("You didn't answer " + count + " questions. Please try again."); count = 0; } else { for (var Ix=0; Ix<10; Ix++) { if (this.Answer[Ix] == this.thisAns[Ix]) { document.getElementById("check" + Ix).checked = false; count++; } else { document.getElementById("check" + Ix).checked = true; } } alert("You got " + count + " correct."); } retu count; } </script> </head><body> <div id="quizblock"></div> <script type="text/JavaScript"> var MyQuiz = new Questions("quizblock"); MyQuiz.generateQuiz(); </script> <input type="button" onclick="MyQuiz.ScoreIt();" value="Done"> </body></html>
- - , .
برچسب:
نویسنده: محمد رضا جوادیان