Как складывать inputs под первым?

У меня есть этот код, который позволяет мне суммировать TextBox и печатать результаты в последнем TextBox но только функционируй в первой линии.

function sum() {
    var acarreo = document.getElementById('acarreo[]').value;
    var pagocond = document.getElementById('pagocond[]').value;
    var via = document.getElementById('via[]').value;
    var peaje = document.getElementById('peaje[]').value;
    var combust = document.getElementById('combust[]').value;
    var result = parseFloat(acarreo)-( parseFloat(pagocond)+ parseFloat(via)+ parseFloat(peaje)+ parseFloat(combust));
    if (!isNaN(result)) {
        document.getElementById('txt3').value = result;
    }
}
window.onload = function() {
    sum();
}






introducir la descripción de la imagen aquí

2
задан 19.03.2019, 11:47
1 ответ

Только функционируй для первого, потому что ты выбираешь из-за Id единственный элемент в каждом случае, что первый элемент, который он находит с этой идентификацией. Также снова отмечать, что IDs должны бы быть уникумами и не повторяться.

function sum(e) {

    const tr = e.path[2]; // Accedemos a la fila de la tabla. El valor 2 debera ser cambiado dependiendo de la posicion del elemento tr en el objeto path.

    let total = 0; // contador

    tr.querySelectorAll('input[type=text]:not(.txt3)').forEach(el => {
        if (isNaN(parseFloat(el.value))) return;
        total += parseFloat(el.value);
    }); // Sumamos el value de todos los inputs de entrada de la fila

    tr.querySelector('.txt3').value = total; // Grabamos el valor total en el input de salida de la fila
}

window.onload = function () {
    document.querySelectorAll('input:not(.txt3)').forEach(el => {
      el.addEventListener('input', sum);
    }); // Añadimos el evento sum a todos los inputs salvo el de salida
}

Относительно PHP, что enseГ±as, deberГ-схвати нам изменять ID's для того, чтобы они были Гєnicos.

    <td><input type="text" size="5" name="acarreo[]" value="<?php echo $acarreo=$row['acarreo']?>" title="ACARREO"></td>
    <td><input type="text" size="5" name="pagocond[]" value="<?php echo $pagocond=$row['pagocond']?>" title="PAGO DE CONDUCTOR"></td>
    <td><input type="text" size="5" name="via[]" value="<?php echo $via=$row['via']?>" title="VIATICO"></td>
    <td><input type="text" size="5" name="peaje[]" value="<?php echo $peaje=$row['peaje']?>" title="PEAJE"></td>
    <td><input type="text" size="5" name="combust[]" value="<?php echo $combust=$row['combust']?>" title="COMBUSTIBLE"></td>
    <td><input type="text" class="txt3"  readonly/>
<?php 
    echo array_reduce($row, function ($v, $w) { 
        $v += $w;
        return $v;
    }); 
?></td>

AquГ - оставил тебя cГіdigo для того, чтобы ты увидел функционирование: тестирует

И aquГ - cГіdigo adaptГЎndose mГЎs, которое ты просишь: тестирует

4
ответ дан 02.12.2019, 05:28

Теги

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