Javascript测试的问题

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

我试图添加至少两个可能的正确答案,但似乎无法添加。下面是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: "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);
};