在Javascript中返回值和变量范围

时间:2015-10-07 13:17:40

标签: javascript variables scope

我在解决如何在一个函数中正确返回值并将其传递给另一个函数时遇到了一些麻烦。变量是randomQuestion,我不能让它作为整数出现在函数中。这个想法是在两个函数中使用相同的问题ID,因此例如在第二个函数中,我可以使用它来确定询问了哪个问题,并找到正确的答案以将其与用户输入相匹配。

$('#quiz').on('click', beginQuiz);
$('#giveanswer').on('click', nextQuestion);

var randomQuestion = Math.floor(Math.random() * questions.length);

function beginQuiz(randomQuestion) {

    $("#questions tbody tr").remove();
    document.getElementById("questions").deleteTHead();

    //Get the JSON data from our HTML and convert it to a JavaScript object
    //In the real world, this data will likely be retrieved  from the server via an AJAX request
    var questions = JSON.parse(document.getElementById('questions-json').innerHTML);



    console.log(randomQuestion);

    var quizQuestion = questions[randomQuestion];


    var tblRow = '<tr>' + '<td>' + quizQuestion.q_text + '</td>' + '</tr>'
        //Add our table row to the 'questions' <table>
    $(tblRow).appendTo('#questions tbody');

    document.getElementById('answers').style.display = 'block';
    document.getElementById('answerlabel1').innerHTML = quizQuestion.q_options_1;
    document.getElementById('answerlabel2').innerHTML = quizQuestion.q_options_2;
    document.getElementById('answerlabel3').innerHTML = quizQuestion.q_options_3;
    document.getElementById('answerlabel4').innerHTML = quizQuestion.q_options_4;

    return randomQuestion;
}

function nextQuestion(randomQuestion) {

    console.log(randomQuestion);
    //Get the JSON data from our HTML and convert it to a JavaScript object
    //In the real world, this data will likely be retrieved  from the server via an AJAX request
    var questions = JSON.parse(document.getElementById('questions-json').innerHTML);
    var score = 0;
    var playeranswer = $('input:radio[name=answer]:checked').val();
    var correctanswer = questions[randomQuestion].q_correct_option;

    if (playeranswer == questions.q_correct_option) {
        score++
        document.getElementById('score').innerHTML = score;
    }
}

1 个答案:

答案 0 :(得分:2)

从函数声明中删除randomQuestion参数,因为它是全局的。如上所述,您的函数都会查看它们自己的本地raqndomQuestion变量,该变量未定义。