Почему эта функция не работает? Отображается ошибка val of null

функция вызывается из модальной таблицы. а к телу таблицы обращается 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............!!!!!!!!");

                    }
                });

            }


        });
    }); 

ВКонтроллер 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;
    }

ошибка, отображаемый в консоли, Почему эта функция не работает? Отображается ошибка val of null

Отображается ошибка как Uncaught TypeError: невозможно прочитать свойство val, имеющее значение null

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

Кто-нибудь мог это проверить?

user9758928 31.10.2018 08:28

возможно, ваш требуемый элемент ID не имеет значения. Всегда ли $row->TOTAL представляет собой ценность? В каком событии возникает ошибка?

André Kelling 31.10.2018 08:28

Функция UpdateMargin имеет ошибку согласно console. но в ваших снимках нет функции UpdateMargin

Negi Rox 31.10.2018 08:29

какова ценность массивов? а также можете ли вы поделиться своим html, если считаете, что это актуально

Narendra 31.10.2018 08:29

@ AndréKelling на onkeypress и onchange выдает ошибку. но в исходном инструменте он показывает значения как переданные. отображается как UpdateMargin (sale1765, margin1765,1110)

user9758928 31.10.2018 08:33

@NegiRox там в консоли. но показывает ошибку. значение передается, как показано ниже. затем также отображается ошибка .UpdateMargin (sale1765, margin1765,1110)

user9758928 31.10.2018 08:35

Массивы @NarendraMongiya существуют только в вызове ajax. эта область работает нормально. вот что мне нужно, я хочу изменить значение текстового поля в соответствии с другим изменением текстового поля. эта область html находится в функции контроллера ajax

user9758928 31.10.2018 08:37

это означает, что вы просто путаете между javascript и jquery

Negi Rox 31.10.2018 09:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
266
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

я проверил . он несет значение как [объект HTMLInputElement]. что мне делать, чтобы это изменить?

user9758928 31.10.2018 08:53

Пожалуйста, проверьте saleid [0] или saleid.value с помощью alert.

Ranjith 31.10.2018 10:31
saleid.value даст вам значение
Ranjith 31.10.2018 10:39

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

Но вы получаете элемент без JQuery.

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

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

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

он показывает ошибку как это при внесении изменений, которые вы сказали Uncaught Error: Синтаксическая ошибка, нераспознанное выражение: # [object HTMLInputElement]

user9758928 31.10.2018 08:44

теперь я просто добавил алерт в функцию с saleid. он предупредил [объект HTMLInputElement]

user9758928 31.10.2018 08:51

на этой функции контроллера ajax значение передается, не могли бы вы его проверить?

user9758928 31.10.2018 09:10

это означает, что saleid уже является элементом, а не строкой, представляющей идентификатор этого элемента.

Shilly 31.10.2018 14:19

Решение на основе JQuery было бы следующим: var sales = $( saleid ).val(); без хеша, поэтому элемент будет обернут как элемент JQuery. Это было бы эквивалентом var sales=saleid.value;. Я бы предложил изменить имя с saleid и marginid на saleelement и marginelement внутри функции updateMargin, чтобы их имена были правильными, а не сбивали с толку.

Shilly 31.10.2018 15:53
Ответ принят как подходящий

использовать

var sales=saleid.value;

вместо того

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

Другие вопросы по теме