Javascript 如何在不将变量重置为零的情况下获得更高的值?

Javascript 如何在不将变量重置为零的情况下获得更高的值?,javascript,jquery,count,Javascript,Jquery,Count,我有一个小测验,我想知道我有多少答案a,b和c,d,e。我需要根据最高结果(a..bc..etc)显示答案 我已经在循环之前定义了变量。但我不明白为什么它总是重置为零。我已经检查了我的变量。他们从0开始,循环之后,我看到他们有了新的数字。所以这是可行的,但是在我使用回调之后,它们的值都被重置为零 我已经尝试在我的$(“#quizz”).submit(函数(事件)之外定义变量。仍然不工作,变量一点也不改变,它们保持在0。我已经尝试在ready=function()之外设置变量。同样的,根本不工作

我有一个小测验,我想知道我有多少答案a,b和c,d,e。我需要根据最高结果(a..bc..etc)显示答案

我已经在循环之前定义了变量。但我不明白为什么它总是重置为零。我已经检查了我的变量。他们从0开始,循环之后,我看到他们有了新的数字。所以这是可行的,但是在我使用回调之后,它们的值都被重置为零

我已经尝试在我的
$(“#quizz”).submit(函数(事件)
之外定义变量。仍然不工作,变量一点也不改变,它们保持在0。我已经尝试在ready=function()之外设置变量。同样的,根本不工作

有件事我不明白。为什么变量总是重置为零。这是我能做的最远的了

ready = function() {

  // Init     $.fn.getMax();

  $("#quizz").submit(function( event ) {

    event.preventDefault();

    var a = 0;
    var bc = 0;
    var d = 0;
    var e = 0;

    $("input[type=radio]:checked").each(function() {
      if ($(this).val() == "1"){
        a++;
      }else if ($(this).val() == "2" || $(this).val() == "3"){
        bc++;
      }else if ($(this).val() == "4"){
        d++;
      }else {
        e++;
      }
    }, $.fn.getMax());   }); };

$(document).ready(ready); $(document).on('page:load', ready);

$.fn.getMax = function(){
  var numbers_array = [a, bc, d, e];
  var biggest = Math.max.apply( null, numbers_array );
   alert(biggest);
};
因为:

  $("#quizz").submit(function( event ) {
                         ^^^^^^^
     var a = 0;
您的
a
是您正在定义的
函数(事件)
闭包中的局部变量。它不是全局变量,因此除了在该闭包中之外,不存在其他任何地方

如果要将这些变量用作全局变量,必须首先在全局范围中定义它们:

var a,b,c,d;
$('#quizz').etc...;
$.fn.max = etc....

因为每次单击“发送”时,此代码都会执行
$(document).ready(ready);
$(document).on('page:load',ready);
请记住,提交通常会重新加载页面…所以我认为这是您的问题…但是,正如我在第一条评论中所说的,我已经尝试在$('#quizz'之外设置变量了)函数,但仍然不起作用。变量根本没有改变,它们保持在0。也可以将初始化从提交处理程序中移出。每次提交时,您都会将它们重置为零。如果我将变量设置在外部,则我有:Uncaught ReferenceError:a未在我的$.fn.getMax=function()中定义另外,我只提交一次表单,因此不应该重置它们。我知道如果我发送另一个表单,它会重置整个表单,因为我将变量设置为0。或者我不明白你的意思,抱歉:实际上,我忘记了在回调函数中将变量设置为参数。这就是为什么我的变量总是设置为0:)谢谢你的帮助!