如何在没有变量重置为零的情况下获得更高的值?

时间:2016-09-16 16:31:23

标签: javascript jquery count

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

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

我试图在$("#quizz").submit(function( event )之外定义变量。仍然没有工作,变量根本没有变化,它们保持在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);
};

1 个答案:

答案 0 :(得分:1)

因为:

  $("#quizz").submit(function( event ) {
                         ^^^^^^^
     var a = 0;

您的a是您定义的function (event)闭包中的LOCAL变量。它不是一个全局变量,因此不会存在于闭包内部以外的任何地方。

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

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