0

嗨,我在 jquery 上完全是菜鸟,我正试图精简,所以我决定做一个动态测验,以提高我的技能,我一直在一步一步做,然后尝试把它全部包装起来。我陷入了如何检查我的复选框中的一个是否被选中以比较其是否正确答案然后更新问题和答案的方式。这是我的html:

<!DOCTYPE html>
<html lang='es'>
<head>
<meta charset='UTF-8'>
<title>Dynamic Quiz</title>
<link rel="stylesheet" type="text/css" href="css/normalize.css">
<link rel="stylesheet" type="text/css" href="css/estilos.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/prefixfree.js"></script>
<script type="text/javascript" src="js/codigo.js"></script>
</head>
<body>
<header>
    <hgroup>
        <h1>This is my Dynamic Quiz</h1>
        <h2>Using html5 / css / javascript</h2>
    </hgruop>
</header>

<section id='description'>
    <p>This quiz is compossed by 10 questions, you have to answer at least 7
       from 10 to pass the exam.</p>
    <h2>Lets start!</h2>
</section>

<div id='questions-number'>
    <p>Question <span id='current-question'>1</span> of <span>10</span> </p>
</div>

<section id='questions'>
    <p id='question'></p>

    <ul>
        <li><input type='checkbox' id='checkAnswer0'/><label id='answer0'>answer0</label></li>
        <li><input type='checkbox' id='checkAnswer1'/><label id='answer1'>answer1</label></li>
        <li><input type='checkbox' id='checkAnswer2'/><label id='answer2'>answer2</label></li>
        <li><input type='checkbox' id='checkAnswer3'/><label id='answer3'>answer3</label></li>
    </ul>
</section>

<div id='next'>
    next
</div>
</body>
</html>

这就是我到目前为止在 jquery 中得到的:)

$(document).on('ready', ready);
function ready(){
var allQuestions =
[
    {
        question1: "Whats my real name?",
        choices1: ["Jhonnatan", "Alberto", "Tatan","Jaime"],
        answer1: 0
    },

    {
        question2: "Who is Colombia's president?",
        choices2: ["Alvaro Uribe", "Andres Pastrana", "Juan Manuel Santos","Tatan"],
        answer2: 2
    },

    {
        question3: "My favorite super heroe?",
        choices3: ["Batman", "Flash", "Tatan","Javascript"],
        answer3: 3
    },

    {
        question4: "Wich sports do i practice?",
        choices4: ["Climbing", "Swimming", "Programming","Running"],
        answer4: 0
    },

    {
        question5: "Whats my dad's name?",
        choices5: ["Alberto", "Jorge", "Javier","Jose"],
        answer5: 1
    },

    {
        question6: "Whats my favorite color?",
        choices6: ["Red", "Purple", "Blue","All"],
        answer6: 2
    },

    {
        question7: "My favorite alcoholic drink",
        choices7: ["Vodka", "Aguardiente", "Rum","Tekila"],
        answer7: 3
    },

    {
        question8: "Whats my favorite kind of music?",
        choices8: ["Hardcore", "Reggaeton", "Salsa","Programming"],
        answer8: 0
    },

    {
        question9: "How many qestions has this quiz??",
        choices9: ["20", "8", "10","12"],
        answer9: 2
    },

    {
        question10: "My favorite programming lenguage?",
        choices10: ["Ruby", "Arduino", "Python","Javascript"],
        answer10: 3
    }
];
var question = $('#question');
var choice1 = $('#answer0');
var choice2 = $('#answer1');
var choice3 = $('#answer2');
var choice4 = $('#answer3');

question.text(allQuestions[0].question1);
choice1.text(allQuestions[0].choices1[0]);
choice2.text(allQuestions[0].choices1[1]);
choice3.text(allQuestions[0].choices1[2]);
choice4.text(allQuestions[0].choices1[3]);
console.log('funcionando!');

var next = $('#next');
next.on('click', changeQuestion);   
function changeQuestion(){
    var checked = $('#checkAnswer0');
    if($checked.prop('checked')){
        console.log('correcto')else{
            console.log('no es correctp'); 
        }
    }
}
}

如果您能帮我解决这个问题,我将不胜感激!:)

4

3 回答 3

1

很高兴你正在努力学习。您可以在之后练习很多清理和效率方面的事情,但是您可以通过多种方式找到选中的元素,例如$(elem).is(':checked')$(':checked')查找全部。

于 2013-03-29T00:38:38.967 回答
1

这个例子似乎做了你想要完成的事情。我试图尽可能少地修改你的代码,所以希望这是有道理的!

例如,当键一致时,遍历对象/数组要容易得多。

{
    question: "Whats my real name?",
    choices: ["Jhonnatan", "Alberto", "Tatan","Jaime"],
    answer: 0
},

... instead of ...

{
    question1: "Whats my real name?",
    choices1: ["Jhonnatan", "Alberto", "Tatan","Jaime"],
    answer1: 0
},
于 2013-03-29T00:44:01.403 回答
0

这就是我做到的:)我很高兴我做到了,我刚刚看到了@cmallard 的例子,似乎我还需要改进一些东西,而且我似乎以正确的方式......如果你们有任何建议我想见他们!:)

$(document).on('ready', ready);
function ready(){
var allQuestions =
[
    {
        question: "Whats my real name?",
        choices: ["Jhonnatan", "Alberto", "Tatan","Jaime"],
        answer: 0
    },

    {
        question: "Who is Colombia's president?",
        choices: ["Alvaro Uribe", "Andres Pastrana", "Juan Manuel Santos","Tatan"],
        answer: 2
    },

    {
        question: "My favorite super heroe?",
        choices: ["Batman", "Flash", "Tatan","Javascript"],
        answer: 3
    },

    {
        question: "Wich sports do i practice?",
        choices: ["Climbing", "Swimming", "Programming","Running"],
        answer: 0
    },

    {
        question: "Whats my dad's name?",
        choices: ["Alberto", "Jorge", "Javier","Jose"],
        answer: 1
    },

    {
        question: "Whats my favorite color?",
        choices: ["Red", "Purple", "Blue","All"],
        answer: 2
    },

    {
        question: "My favorite alcoholic drink",
        choices: ["Vodka", "Aguardiente", "Rum","Tekila"],
        answer: 3
    },

    {
        question: "Whats my favorite kind of music?",
        choices: ["Hardcore", "Reggaeton", "Salsa","Programming"],
        answer: 0
    },

    {
        question: "How many qestions has this quiz??",
        choices: ["20", "8", "10","12"],
        answer: 2
    },

    {
        question: "My favorite programming lenguage?",
        choices: ["Ruby", "Arduino", "Python","Javascript"],
        answer: 3
    }
];

var number=0;
var question = $('#question');
var choice1 = $('#answer0');
var choice2 = $('#answer1');
var choice3 = $('#answer2');
var choice4 = $('#answer3');
var next = $('#next');
var currentQuestion = $('#current-question');

next.on('click', changeQuestion);
addQuestionAndAnswers();    



function addQuestionAndAnswers() {
    currentQuestion.text(number + 1);
    question.text(allQuestions[number].question);
    choice1.text(allQuestions[number].choices[0]);
    choice2.text(allQuestions[number].choices[1]);
    choice3.text(allQuestions[number].choices[2]);
    choice4.text(allQuestions[number].choices[3]);
    console.log('funcionando!');
}


function changeQuestion(){
    if(number!=9){
        if($("#myForm input[type='radio']:checked").val() ==
 allQuestions[number].answer){
            number = number +1;
            addQuestionAndAnswers();
        } else{
            console.log('respuesta errada');
        }
    } else {
        displayResult();
    }


    function displayResult(){
        currentQuestion.text('10');
        $('#myForm').css('display', 'none');
        $('#question').css('display', 'none');
        $('#next').css('display', 'none');
        $('#score').css('display', 'inline-block')
        $('#score').text('Your score is: ' + (number + 1) + 'pts');


    }
}
}
于 2013-03-29T02:10:57.100 回答