为什么控制台无法找到我的变量?

时间:2014-04-04 03:09:57

标签: javascript html arrays

所以我知道这段代码很长。对不起,但为了便于阅读,我不会牺牲空间。当我测试这段代码时,控制台给了我这个错误:

ReferenceError: Can't find variable: useranswer
    doMath
    onclick

这是一个测验,可以通过按我的"电子邮件测验"自动通过电子邮件发送。按钮。

每个变量的命名为" a **"是无线电输入的布尔状态。我正在检查每个问题的价值,以便用户回答每个问题。然后,如果答案匹配,我将其与正确的答案和增量分数进行比较。

我在电子邮件测验功能方面也存在一些问题......我不确定问题是什么。

对这些问题的任何见解?

<!DOCTYPE HTML>
<html>

<!--========================================================================-->
    <script type="text/javascript">

    function doMath()
    {   
        //Score

        var score = 0;

        // arrays to store answers, and user submited answers.
        var answer = new Array();
        var userAnswer = new Array();

        // Quiz answers:

        answer[0] = "e";
        answer[1] = "b";

        var a11 = document.getElementById('answer1-1').checked;
        var a12 = document.getElementById('answer1-2').checked;
        var a13 = document.getElementById('answer1-3').checked;
        var a14 = document.getElementById('answer1-4').checked;
        var a15 = document.getElementById('answer1-5').checked;

        var a21 = document.getElementById('answer2-1').checked;
        var a22 = document.getElementById('answer2-2').checked;
        var a23 = document.getElementById('answer2-3').checked;
        var a24 = document.getElementById('answer2-4').checked;
        var a25 = document.getElementById('answer2-5').checked;


        // checks users answer for first question:
        if(a11){
            useranswer[0] = "a";
        }
        else if(a12){
            useranswer[0] = "b";
        }
        else if(a13){
            useranswer[0] = "c";
        }
        else if(a14){
            useranswer[0] = "d";
        }
        else{
            useranswer[0] = "e";
        }

        // checks users answer for second question:
        if(a11){
            useranswer[1] = "a";
        }
        else if(a12){
            useranswer[1] = "b";
        }
        else if(a13){
            useranswer[1] = "c";
        }
        else if(a14){
            useranswer[1] = "d";
        }
        else{
            useranswer[1] = "e";
        }

        //adds up score:

        if(userAnswer[0] == answer[0]){
            score++;
        }

        if(userAnswer[1] == answer[1]){
            score++;
        }

        emailQuiz(score);
        console.log("doMath is working");
    }
    ////////////////////////////////////////////////////////////////////////
    </script>
    <script>
    ////////////////////////////////////////////////////////////////////////
    function emailQuiz(score)
    {
        var test = "\n\n You scored " + score + "/2 on the test.";
        window.open('mailto: noah.gary394@topper.wku.edu'
                        + '?subject= quiz answers' 
                        + '&body=  Your quiz results:' + escape(test));

        console.log("emailQuiz is working");
    }
    ////////////////////////////////////////////////////////////////////////
    </script>
<!--========================================================================-->
</head>

    <button type="button" onclick="doMath();emailQuiz();">Email Quiz</button>

</body>
<!--========================================================================-->
</html>

1 个答案:

答案 0 :(得分:5)

JavaScript中的变量区分大小写。

userAnswer != useranswer

这可能看起来并不明显,因为JavaScript会自动将任何非var ed varible提升到它首次分配的全局命名空间。