为什么此功能不起作用?显示空值错误

时间:2018-10-31 07:22:12

标签: javascript php jquery ajax codeigniter

正在从模态表中调用该函数。并且表主体由ajax访问。在此表中,每行两行都带有两个文本框。每行和每个文本框的ID均不同。我将在下面显示我的代码。

ajax函数

$(document).ready(function(){
    /////////////// Invoice Link Click ////////////////
    $("#invoice").click(function(){

        var rowID=[];

        ///////// Initialize and assign row row value /////////////
        rowID = arrays;
        var tempArrays='';
        for(i=0;i<arrays.length;i++){
        if(arrays[i]!=''){
            if(tempArrays!=''){
                tempArrays=tempArrays+','+arrays[i];
                }
            else{
                tempArrays=arrays[i];
                }


            }
        }

        alert("SUCCESS ALERT" +tempArrays);

        alert(typeof tempArrays);
        if(rowID!=''){
            $.ajax({
                url:'<?php echo base_url(); ?>index.php/Ajax_calls/invoicingFetch',
                type: 'POST',
                data:{tempArrays:tempArrays},

                success: function(data){

                    $('#newtest').html(data);
                    alert("SUCCESSFULLY RETURNED............!!!!!!!!");

                    }
                });

            }


        });
    }); 

In AJAX控制器 功能

public function invoicingFetch(){
    if(isset($_POST['tempArrays'])){
            $output='';
            $postedVal=$this->input->post('tempArrays');
            $myArray = explode(',',$postedVal);

            $this->load->model('Ajax_model');
            $arrayLen=sizeof($myArray);
            for($i=0;$i<$arrayLen;$i++)
            {
                $arre=$myArray[$i];
                $records = $this->Ajax_model->getRawdataGDSSingle($arre);
                foreach($records as $row){
                    $saleid='sale'.$row->slno;
                        $marginid='margin'.$row->slno;
                    $output.='

                    <tr>
                        <td style="text-align:center !important;"><input type="checkbox" id="'.$row->slno.'"  /> </td>
                        <td>'.$row->NAME.' </td>
                        <td>'.$row->TOTAL.' </td>
                        <td><input type="text" id="'.$saleid.'" name="saleamount" onKeyPress="UpdateMargin('.$saleid.','.$marginid.','.$row->TOTAL.')" onChange="UpdateMargin('.$saleid.','.$marginid.','.$row->TOTAL.')" value="'.$row->TOTAL.'" /> </td>
                        <td><input type="text" id="'.$marginid.'" name="marginamount" onchange="UpdateSale('.$marginid.','.$saleid.','.$row->TOTAL.')" value="0"  /> </td>
                        <td>'.$row->BKD_BY.' </td>
                        <td> </td>
                        <td>'.$routing.' </td>
                        <td>'.$row->A2L.' </td>
                        <td>'.$row->TKT_NUMBER.' </td>
                    </tr>
                    ';
                    }
                }

            echo $output;  ///this output is the table body in modal
            }
     }
模态页面标题上的

脚本

function UpdateMargin(saleid,marginid,total){
    var sales=document.getElementById(saleid).value;
    //var margin=document.getElementById(marginid).value;
    var total=total;
    var salMargin=sales-total;
    document.getElementById(marginid).value=salMargin;
    }

在控制台中显示的错误Showing Error as **Uncaught TypeError: Cannot read property 'val' of null**

将错误显示为未捕获的TypeError:无法读取null的属性'val'

有人能告诉我原因吗?为什么会这样呢?在此先感谢所有的光辉。....

3 个答案:

答案 0 :(得分:4)

.val()是一个JQuery函数。

但是您正在获取没有JQuery的元素。

因此,如果var margin=document.getElementById(marginid).value;有效,则必须将.val()代码更改为var sales = $( '#' + saleid ).val();

如果获取.value不起作用,则该元素没有值(可能不是输入元素),并且您正在寻找innerText或innerHTML或某些数据属性。

如果以上所有条件都不成立,则saleid可能不是HTML中的有效ID。

答案 1 :(得分:0)

您要从元素获取的值在DOM中不存在。请检查是否存在带有saleid(无论您要传递的内容)的元素

答案 2 :(得分:0)

使用

var sales=saleid.value;

代替

var sales=document.getElementById(saleid).value;