基本的Javascript测验
Basic Javascript for Quiz
我正在使用Javascript创建一个非常基本的测验应用程序,并且想知道嵌套数组/对象的最佳方法是什么。我以前只用简单的一级嵌套就这样做过,但觉得这个项目可能需要更多。
测验需要有 5 个问题和多个答案。每个答案都有一个与之关联的分值。测验完成后,它将取分数的平均值,然后给你一个类型,即。"你不小心打了A","你大部分都打了B勾"等。类似于您在杂志上获得的测验。
我相信应该是这样的:
var quizList = {
"question": "What's your favourite Color",
"answerswers": {
["a","Blue","2"],
["b","Green","4"],
["c","Red","6"],
["d","Orange","8"],
},
"question": "What's your favourite Animal",
"answerswers": {
["a","Dog","2"],
["b","Cat","4"],
["c","Caterpiller","6"],
["d","Donkey","8"],
}
};
这是正确的吗,如果是,我将如何调用各种数组元素?
这是正确的吗
没有。这不是一个数组,它是一个包含嵌套对象文字和数组的对象文字。它还包含一个相当大的问题;您将用每个新问题/答案覆盖以前的问题/答案键。一个对象中不能有两个同名的属性。您已经有效地完成了此操作:
{ a: 'b', a: 'c' }
这将抛弃'b'
并将a
设置为'c'
.
您可能需要重新考虑结构,以便顶级元素是一个数组:
var quizList = [
{
"question": "What's your favourite Color",
"answerswers": [
["a","Blue","2"],
["b","Green","4"],
["c","Red","6"],
["d","Orange","8"],
]
}, {
"question": "What's your favourite Animal",
"answerswers": [
["a","Dog","2"],
["b","Cat","4"],
["c","Caterpiller","6"],
["d","Donkey","8"],
]
}
];
。如果是这样,我将如何调用各种数组元素?
而且你不能"调用"这些数组元素。它们不是可执行代码,它们是哑数据。您需要编写一个使用此对象作为其输入的程序,并生成包含一系列<input>
或<select>
元素的<form>
。
最好的方法是这样的:
var quizList = [{
question: "What's your favourite Color",
alternatives: [
{ letter: "a", text: "Blue", value: "2" },
{ letter: "b", text: "Green", value: "4" },
{ letter: "c", text: "Red", value: "6" },
{ letter: "d", text: "Orange", value: "8" },
]
}, {
/* other question */
}];
如前所述,您的quizList
不是一个数组。
这部分是无效的:
"answerswers": {
["a","Dog","2"],
["b","Cat","4"],
["c","Caterpiller","6"],
["d","Donkey","8"],
}
answers
是一个对象(因为{}
(,所以它需要一个键和一个值。也许你的意思是:
"answerswers": [
["a","Dog","2"],
["b","Cat","4"],
["c","Caterpiller","6"],
["d","Donkey","8"],
]
现在是一个包含 4 个嵌套数组的数组。
但我宁愿把它改成这样:
"answerswers": [{
letter: "a",
text: "Dog",
value: "2"
},
//...etc
]
通过使选项对象而不是数组,您可以更可靠地获取每个答案的属性。所以代替:
var letter = someAnswer[0]; // is this the right index??
您可以这样做:
var letter = someAnswer.letter; // now I know it's the right one
您的代码将更容易以这种方式维护,并且您不必记住哪个索引是答案的哪个部分。
总的来说,我会选择这样的东西:
var quizList = [{
question: "What's your favourite Color",
answers: [{
letter: "a",
text: "Dog",
value: "2"
},
// etc
]
},
// etc
];
现在在顶层quizList
是一个对象数组,每个对象都有一个属性question
和另一个属性answers
,后者是具有属性 letter
、text
和 value
的对象数组。
var quizList={
"questions":[
{
"question": "What's your favourite Color",
"answerswers": {
"a":{
"text":"Blue",
"point":"2"
},
"b":{
"text":"Green",
"point":"4"
},
"c":{
"text":"Red",
"point":"6"
}
"d":{
"text":"Orange",
"point":"8"
}
}
},
{
"question": "What's your favourite Animal",
"answerswers": {
"a":{
"text":"Dog",
"point":"2"
},
"b":{
"text":"Cat",
"point":"4"
},
"c":{
"text":"Monkey",
"point":"6"
}
"d":{
"text":"Donkey",
"point":"8"
}
}
}
]
};
尝试使用 json 格式执行此操作。
- 使用Javascript创建测验页面
- 奇怪的对象测验-JavaScript-初学者
- 超级棘手的Javascript测验,需要弄清楚答案
- 用于在 SCORM1.2 中计算测验分数的 Javascript
- 我的测验中的JavaScript计算器
- Javascript测验,有4个问题.单选按钮+继续按钮
- 两个令人困惑的Javascript测验
- Javascript测验没有进行到下一个
- JavaScript测验的模式匹配
- 使用Javascript检查测验答案的最安全方法
- 使用javascript测验表单循环id
- Javascript匿名函数测验
- 使用javascript的多项选择题测验
- JavaScript-测验单选按钮和表单验证
- 使用 HTML + Javascript 的多项选择测验:回复:使用数组对象和属性更新分数(帮助分析代码)
- Javascript 测验评分
- 无法在 Javascript 测验中显示最终分数
- 在javascript中进行随机测验
- 带有单选按钮 JavaScript 的随机测验
- 需要将用 javascript 编写的测验拆分为每个 Q 的 1 页,而不是单个页面上的所有 Q