почему эта функция не работает? Отображение ошибки val of null - PullRequest
0 голосов
/ 31 октября 2018

функция вызывается из модальной таблицы. и тело таблицы доступно через ajax. в этой таблице две каждой строки несут два текстовых поля. Его идентификаторы разные для каждой строки и каждого текстового поля. Я покажу свои коды ниже.

функция 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**

Отображение ошибки как Uncaught TypeError: Невозможно прочитать свойство 'val' с нулевым значением

Кто-нибудь может сказать мне причину? почему это происходит? Заранее благодарим всех бриллиантов .....

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

.val() - это функция JQuery.

Но вы выбираете элемент без JQuery.

Так что, если var margin=document.getElementById(marginid).value; работает, вы должны изменить код .val() на var sales = $( '#' + saleid ).val();

Если получение .value не сработало, либо элемент не имеет значения (возможно, это не элемент ввода), и вы ищете innerText или innerHTML или какое-либо свойство данных.

Если ничего из вышеперечисленного не соответствует действительности, вероятно, Saleid не является действительным идентификатором в вашем HTML.

0 голосов
/ 31 октября 2018

использование

var sales=saleid.value;

вместо

var sales=document.getElementById(saleid).value;
0 голосов
/ 31 октября 2018

Значение, которое вы пытаетесь получить от элемента, не существует в DOM. Пожалуйста, проверьте, существует ли элемент с saleid (что бы вы ни передавали)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...