我有一个测验,我试图知道我对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);
};
答案 0 :(得分:1)
因为:
$("#quizz").submit(function( event ) {
^^^^^^^
var a = 0;
您的a
是您定义的function (event)
闭包中的LOCAL变量。它不是一个全局变量,因此不会存在于闭包内部以外的任何地方。
如果要将这些变量用作全局变量,则必须首先在全局范围中定义它们:
var a,b,c,d;
$('#quizz').etc...;
$.fn.max = etc....