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

标签 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);
};

最佳答案

因为:

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

您的a是您定义的这个函数(事件)闭包中的本地变量。它不是一个全局变量,因此除了该闭包内部之外不会存在于任何地方。

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

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

关于javascript - 如何在不将变量重置为零的情况下获得更高的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39536265/

相关文章:

SQL 查询 - 从 CASE 计算新定义的值

MySQL group_concat 和计数

javascript - 尝试使用 underscore.js 获取空 friend 从解析和渲染中提取数据

javascript - 在 AngularJS 中将换行符(换行符)放入 toastr 消息中?

javascript - 一次添加一个 div,或删除重复字段

javascript - CSS 局部颜色百分比值

mysql - MySQL 查询连接表中的 GROUP BY、COUNT()

javascript - 如何使用 MOBAC 通过 OpenLayers 创建的 map 集作为离线 map ?

javascript - goog.provide() - 未捕获的语法错误 : Unexpected token ILLEGAL

javascript - jQuery 单击事件的 Animate.css 问题