Задать вопрос
@HAtan

Как сделать произведение 2х столбцов?

Добрый день.
Суть задачи, таблица в ней три столбца, нужно значение в одном ряду 1 и 2 столбец перемножить и записать в третий столбец. Загвоздка в том что html менять нельзя. Сумму сделал,а с произведением возникли проблемы и получаю NAN.

<table>
    <tr>
        <th><input type="text" ></th>
        <th><input type="text" ></th>
        <th><input type="text" ></th>
    </tr>
    <tr>
        <th><input type="text"></th>
        <th><input type="text"></th>
        <th><input type="text"></th>
    </tr>
    <tr>
        <th><input type="text"></th>
        <th><input type="text"></th>
        <th><input type="text"></th>
    </tr>
</table>


var sum=0;

    $('table tr').each(function(){
        $(this).change(function() {
            $(this).find('input[type=text]:last').val(sum);
            $(this)
                .find('input[type=text]')
                .each(function () {
                    console.log(parseInt($(this).val()));
                    if(isNaN(parseInt($(this).val())))
                        console.log("NaN");
                    else
                        sum += parseInt($(this).val());
                    // sum *= parseInt($(this).val());
                });
            $(this).find('input[type=text]:last').val(sum);
             sum=0;
        });
    });
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Предлагаю без jQuery.
Первые два инпута в строке можно менять и реагировать на любое изменение в них – событие input.
Третий столбец сделать disabled, чтобы не хотелось в него что-то вписать.
По изменению в любом поле:
  1. получить строку, в которой происходит дело;
  2. пройтись по первым двум input'ам в ней (с индексами < 2: 0 и 1) – из них взять значения, преобразовать их в число (приписав плюс в начале), и положить в массив. Это с прицелом на будущее, где захочется добавить столбцов вдруг.
  3. собранные в массив числа перемножить и записать результат в последний input.

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы