我有一个测验,我想知道 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/