Javascript对象结构

时间:2015-10-04 13:10:57

标签: javascript jquery

我有一份表格收集员工生产数据,以下是代码:

$(document).on('click','input#Apply.btn.btn-success',function(e){

    var TableData;
    TableData = storeTblValues();  
    var TableData1 = [];

    $.each(TableData,function(index,value){

        if(value.quantity && value.quantity >0 && value.quantity < 65535){    
            TableData1[index]={

               "employee_id" : value.employee_id
            ,  "operation_id" : value.operation_id
            ,  "quantity" : value.quantity       
            }

        }   
            }); 
    // retrieving employee_id to fetch date data from date input          
    $.each(TableData1,function(index,value){         
         employee_idj = value.employee_id;
        }); 

    $('#cboxClose').click(); 
    var datee = dateConvToMySqlDate($('input#dateOfProduction_'+employee_idj+'.dateOfProduction_.hasDatepicker').val());
    if(!datee){alert(dateMessager);e.preventPropagation();return false;}
    var noOfRecords = TableData1.length;

    for(i=0;i<noOfRecords;i++)
    {TableData1[i]['production_date'] = datee;}

    var TableData1 = $.toJSON(TableData1); 
    alert(JSON.stringify(TableData1));
    var qurl = '<?php echo base_url();?>production_entry/submitData';
    $.ajax({
    url: qurl,
    type: "POST",    
    data:"pTableData=" + TableData1,           
    success: function(data){

            var data = $.parseJSON(data);
            if(data.status == 'error')
            {
            alert(data.errorMessage);   
            }else{ 
            alert(noOfRecords+' records sent and '+' '+data.successMessage);

              $('#tr_'+employee_idj).fadeOut();
            }
          }
    });

    function storeTblValues()
    {    

        var TableData = new Array();

        $('#searchOperationTable tr').each(function(row, tr){

         var x = parseInt($(tr).find("input.quantity").val());   

            if(x){
            TableData[row]={

               "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val())
            ,  "operation_id" : parseInt($(tr).find('td:eq(0)').text())
            ,  "quantity" : parseInt($(tr).find("input.quantity").val())       
            }
        }
            }); 
            TableData.shift();
            return TableData;
    }

});

当有人错误地输入等于0的数量值时,TableData1对象变为

[ null,{"employee_id" : 3816,"operation_id":3,"quantity":10}]

并且脚本停止工作。我想消除这个null。怎么办?

2 个答案:

答案 0 :(得分:0)

输入0时,您的支票if(x)为false,因此不会为该条目设置TableData[row]。而是使用array.push设置TableData:

     if(x){
        TableData.push({
           "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val())
        ,  "operation_id" : parseInt($(tr).find('td:eq(0)').text())
        ,  "quantity" : parseInt($(tr).find("input.quantity").val())       
        })
     }

答案 1 :(得分:0)

如果您不关心数组的索引值,则可以使用push(value)代替array[index]=value。 就像在我的例子中一样:

TableData.push({
    "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val()),
    "operation_id" : parseInt($(tr).find('td:eq(0)').text()),
    "quantity" : parseInt($(tr).find("input.quantity").val())       
});`