Uncaught ReferenceError: недопустимая левая часть в присваивании при попытке назначить сумму значению - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть функция, в которой я использую для суммирования входных данных двух полей ввода и назначить его одному. Моя функция выглядит так:

function sum(id) {
        nextId = id+2
        console.log($("#id_unit_market_price"+nextId).val())
        $("#id_unit_market_price"+id).val() += $("#id_unit_market_price"+nextId).val();

    }

И функция, из которой я вызываю функцию суммы, выглядит следующим образом:

function makeSub(subRow) {
        var empTab = document.getElementById('empTable');
        document.getElementById("id_unit_market_price"+subRow.parentNode.parentNode.rowIndex).value = 0
        addRow(true);
        sum(subRow.parentNode.parentNode.rowIndex)
    }

console.log($("#id_unit_market_price"+nextId).val()) печатает фактические значения входов. Но когда я пытаюсь сделать $("#id_unit_market_price"+id).val() += $("#id_unit_market_price"+nextId).val();, я получаю сообщение об ошибке (index):325 Uncaught ReferenceError: Invalid left-hand side in assignment at sum ((index):325) at makeSub ((index):318) at HTMLInputElement.onclick ((index):1) Я также пытался разобрать значения в float, но это тоже не работает. Любая помощь будет оценена. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

для присвоения суммы значению

И это проблема.

Вы можете присвоить значение переменной или свойство . Вы не можете присвоить значение значению.

12 = 1 просто не имеет смысла. И все равно не имеет смысла, если вы замените 12 возвращаемым значением функции.


Функция jQuery val принимает аргумент , если вы хотите изменить значение элемента управления формы.

jq.val(new_value)

Таким образом:

const old_value = $("#id_unit_market_price"+id).val();
const value_to_add = $("#id_unit_market_price"+nextId).val();
const new_value = old_value + value_to_add;
$("#id_unit_market_price"+id).val(new_value)

или одним оператором:

$("#id_unit_market_price"+id).val(
    $("#id_unit_market_price"+id).val() +
    $("#id_unit_market_price"+nextId).val()
)

Имейте в виду что значения элементов управления формой строки , поэтому вы, вероятно, захотите преобразовать их в числа , чтобы + добавило их вместе вместо объединения их.

const old_value = +$("#id_unit_market_price"+id).val();
const value_to_add = +$("#id_unit_market_price"+nextId).val();
const new_value = old_value + value_to_add;
$("#id_unit_market_price"+id).val(new_value)
1 голос
/ 24 февраля 2020

Методу .val() необходимо передать параметр для изменения значения.

let currentVal = $("#id_unit_market_price"+id).val();
$("#id_unit_market_price"+id).val(currentVal + $("#id_unit_market_price"+nextId).val());

Вызов функции в левой части присваивания не имеет смысла в JavaScript.

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