0

我在 $(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());
        }
    ...

它奏效了。

4

0 回答 0