Javascript测试的问题
我试图添加至少两个可能的正确答案,但似乎无法添加。下面是JavaScript的代码,如果需要,我可以发布html。我想做的事可能吗?若然,我应如何进行Javascript测试的问题,javascript,Javascript,我试图添加至少两个可能的正确答案,但似乎无法添加。下面是JavaScript的代码,如果需要,我可以发布html。我想做的事可能吗?若然,我应如何进行 var questions = []; questions.push({ q: "Rate your custard making skills from 1-5.", a: "1", b: "2", c: "3", answer: "b" }); questions.push({ q: "wh
var questions = [];
questions.push({
q: "Rate your custard making skills from 1-5.",
a: "1",
b: "2",
c: "3",
answer: "b"
});
questions.push({
q: "what is question two?",
a: "answer one.",
b: "answer two.",
c: "answer three.",
answer: "b"
});
var i = 0;
var answers = [];
window.onload = function() {
var n = document.getElementById('next');
n.onclick = next;
loadNext();
};
function next() {
var aa = document.getElementById('aa');
var ab = document.getElementById('ab');
var ac = document.getElementById('ac');
var ans = null;
if (i == 0) loadNext();
else {
if (aa.checked) ans = "a";
if (ab.checked) ans = "b";
if (ac.checked) ans = "c";
if (ans) {
answers.push(ans);
loadNext();
} else alert("Please Select an answer.");
}
};
function loadNext() {
var qq = document.getElementById('qq');
var qa = document.getElementById('qa');
var qb = document.getElementById('qb');
var qc = document.getElementById('qc');
if (i >= questions.length) endQuiz();
else {
qq.innerHTML = questions[i].q;
qa.innerHTML = questions[i].a;
qb.innerHTML = questions[i].b;
qc.innerHTML = questions[i].c;
i++;
document.getElementById('aa').checked = false;
document.getElementById('ab').checked = false;
document.getElementById('ac').checked = false;
}
};
function endQuiz() {
var score = 0;
for (var j = 1; j < questions.length; j++)
if (answers[j] == questions[j].answer)
score++;
score *= 2;
alert("You Scored: " + score);
};
var问题=[];
问题,推({
问:“从1-5分评价你的蛋羹制作技能。”,
a:“1”,
b:“2”,
c:“3”,
答复:"b"
});
问题,推({
问题二是什么,
答:“回答一个。”,
回答二,
回答三,
答复:"b"
});
var i=0;
var回答=[];
window.onload=函数(){
var n=document.getElementById('next');
n、 onclick=next;
loadNext();
};
函数next(){
var aa=document.getElementById('aa');
var ab=document.getElementById('ab');
var ac=document.getElementById('ac');
var-ans=null;
如果(i==0)loadNext();
否则{
如果(aa.选中)ans=“a”;
如果(ab.checked)ans=“b”;
如果(ac.checked)ans=“c”;
如果(ans){
答案。推送(ans);
loadNext();
}else警报(“请选择答案”);
}
};
函数loadNext(){
var qq=document.getElementById('qq');
var qa=document.getElementById('qa');
var qb=document.getElementById('qb');
var qc=document.getElementById('qc');
如果(i>=questions.length)endquick();
否则{
qq.innerHTML=问题[i].q;
qa.innerHTML=问题[i].a;
qb.innerHTML=问题[i].b;
qc.innerHTML=问题[i].c;
i++;
document.getElementById('aa')。checked=false;
document.getElementById('ab')。checked=false;
document.getElementById('ac')。checked=false;
}
};
函数endquick(){
var得分=0;
对于(var j=1;j
同一属性“b”不能多次使用
将答案更改为数组:
questions.push({
q: "Rate your custard making skills from 1-5.",
a: "1",
b: "2",
c: "3",
answer: ["a", "b"],
scores: [1, 2]
});
更改next
函数以填充答案数组:
function next() {
var aa = document.getElementById('aa');
var ab = document.getElementById('ab');
var ac = document.getElementById('ac');
var ans = []; // <-- here
if (i == 0) loadNext();
else {
if (aa.checked) ans.push("a"); // <-- here
if (ab.checked) ans.push("b"); // <-- here
if (ac.checked) ans.push("c"); // <-- here
if (ans.length > 0) { // <-- here
answers.push(ans);
loadNext();
} else alert("Please Select an answer.");
}
};
更改验证功能以根据选项添加分数:
function endQuiz() {
var score = 0;
for (var j = 0; j < questions.length; j++) {
for(var an=0;an<questions[j].answer.length;an++) {
var ansIndex = answers[j].indexOf(questions[j].answer[an]);
if(ansIndex > -1) {
score += questions[j].scores[an];
}
}
}
score *= 2;
alert("You Scored: " + score);
};
函数endquick(){
var得分=0;
对于(var j=0;j
演示:您介意创建一个包含所有相关代码的数组吗?我不确定,但问题数组不应该被[]而不是{}包围吗?(添加元素/使用推送时)在推送到问题数组的第一个对象中,有两个名为
b
的属性,没有名为a
@bestprogrammerintheworld的属性。将javascript对象{}
推送到数组[]
@blex中没有错。不,我明白了。但我只是有点猜测(暂时无法测试任何东西),当你使用一个js对象数组时,比较会失败,但现在我仔细看了看,我发现这似乎不是问题。嗯,这几乎奏效了,出于某种原因,它仍然会在每个选项上给出2分。我没有看到这一点。谢谢。:)你值10头骆驼。:)
questions.push({
q: "Rate your custard making skills from 1-5.",
a: "1",
b: "2",
c: "3",
answer: ["a", "b"],
scores: [1, 2]
});
function endQuiz() {
var score = 0;
for (var j = 0; j < questions.length; j++) {
for(var an=0;an<questions[j].answer.length;an++) {
var ansIndex = answers[j].indexOf(questions[j].answer[an]);
if(ansIndex > -1) {
score += questions[j].scores[an];
}
}
}
score *= 2;
alert("You Scored: " + score);
};