我想在jquery .click函数之外调用局部变量totalYes。为此,我应该将其设置为全局变量,对吗?最初,代码如下所示:

var answers = [thing1, thing2, thing3, thing4, thing5, thing6, thing7, thing8, thing9, thing10, thing11, thing12];

var answers2 = [answers2array12items];

$("#submmit").click(function() {
    var totalYes=0;
    function checkAnswers() {
        for(var i=0; i<answers.length; i++) {
            var userAnswer = document.getElementById("b"+i).value.toLowerCase();
            if (answers.indexOf(userAnswer.toLowerCase()) !== -1 || answers2.indexOf(userAnswer.toLowerCase()) !== -1) {
                totalYes++;
                $("#correcto").show();
            } else {
                $("#incorrecto").show();
            }
        }
    }
    checkAnswers();
    alert(totalYes);
});


它工作正常,但是,我想在以下地方使用它:

$("total").click(function(){
    alert(totalYes);
});


因此,我在函数之外将totalYes设为“ global”。新版本是:

var answers = [thing1, thing2, thing3, thing4, thing5, thing6, thing7, thing8, thing9, thing10, thing11, thing12];

var answers2 = [answers2array12items];

var totalYes = 0;

$("#submmit").click(function() {
    function checkAnswers() {
        for(var i=0; i<answers.length; i++) {
            var userAnswer = document.getElementById("b"+i).value.toLowerCase();
            if (answers.indexOf(userAnswer.toLowerCase()) !== -1 || answers2.indexOf(userAnswer.toLowerCase()) !== -1) {
                totalYes++;
                $("#correcto").show();
            } else {
                $("#incorrecto").show();
            }
        }
    }
    checkAnswers();
    alert(totalYes);
});


但是在新代码中,不是为每个正确答案在totalYes上加1,而是像这样增加totalYes:“ 1,2,3,4,5,6,7,8,9,10,11,12”,增加为:“ 1、3、6、10、15、21、27、33、39、46、54”。我试过从totalYes ++更改checkAnswers()内部的totalYes修饰符;到totalYes + = 1 ;,但问题仍然存在。

另外,我想知道,为什么警报框每次显示两次,而不是一次?

编辑:这是#total和#submmit的html和CSS:

<div class="nextsa1" id="total"><strong>TOTAL</strong></div>

<input type="button" id="submmit" value="GO">

最佳答案

每次用户输入新答案后,您的代码似乎都在搜索完整的答案列表。因此,在每次调用时,对于当前答案和所有先前答案,“单击内部测试”处理程序都会成功,这说明了totalYes变量的Delta模式。

处理:将totalYes初始化为0,作为单击处理程序中的第一条指令。

关于javascript - 在jquery.click函数之外使用变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23126580/

10-09 17:00