我在$(document).ready()之前声明了一些变量。这些变量存在于一个回调函数中,如果次数被调用x,但是在第一个回调函数之后我遇到了问题一些变量变得不确定。
var file_count = 0;
var permission_state = [ [] ];
var rate_info = [ [] ];
var is_rated = [];
$(document).ready(function(){
...
onComplete: function(id, fileName, responseJSON) {
if($("input[name=voteit"+id+"]").prop("checked")){
is_rated.push(1);
rate_info[id].push($("#title-textarea"+id).val());
rate_info[id].push($("select[name=category"+id+"]").val());
rate_info[id].push($("select[name=subcategory"+id+"]").val());
} else {
is_rated.push(0);
permission_state[id].push($(".permission-level"+id).val());
permission_state[id].push($("#title-textarea"+id).val());
}
...
控制台给了我:
“'onValidate'回调中的捕获异常 - TypeError:permission_state [id]未定义”
在这种情况下,id是一个整数,它在回调函数的每次迭代中递增,并且我检查它是否正常工作。另外,为什么控制台没有说任何关于is_rated变量的信息是未定义的,只有rate_info或permission_state?
编辑:感谢我的建议:
onComplete: function(id, fileName, responseJSON) {
if($("input[name=voteit"+id+"]").prop("checked")){
rate_info[id] = [];
is_rated.push(1);
rate_info[id].push($("#title-textarea"+id).val());
rate_info[id].push($("select[name=category"+id+"]").val());
rate_info[id].push($("select[name=subcategory"+id+"]").val());
} else {
permission_state[id] = [];
is_rated.push(0);
permission_state[id].push($(".permission-level"+id).val());
permission_state[id].push($("#title-textarea"+id).val());
}
...
并且有效。