如何从数组中的每行数据文本框值计算?

时间:2016-09-24 16:21:08

标签: javascript php html arrays

我想显示每个行数据数组的总和值。我有5行数据,我想得到每个数据的结果。谁能帮我解决一下呢?

function subtotal(konversi){
    var hitung = (document.getElementById('quantity').value * document.getElementById('packing_value').value);
    document.forms.demoform.quantity_konversi.value = hitung; 
}
<form id='demoform'>
<?php
$jumlah=5;
for($i=0; $i<$jumlah; $i++){
    $nomor = $i + 1;

    echo"$nomor";
?>

<input type='text' name='quantity[]' id='quantity' onchange="subtotal(this.value,getElementById('packing_value').value);">
X
<input type='text' id="packing_value" value='10' readonly='yes'>
<input type='text' name='quantity_konversi[]' id='quantity_konversi' placeholder='result ???'><br/>

<?php } $nomor++ ?>

</form>

1 个答案:

答案 0 :(得分:0)

您的问题是所有输入字段都具有相同的ID。在HTML中,每个元素/ html标记都应具有唯一的ID。因此,如果您使用id引用JavaScript将找到您的id的第一个出现并使用此元素。即使它们具有相同的id,也会忽略所有其他元素。 所以记住id是唯一的,类可以用在几个元素上。

为了解决您的问题,我使用PHP变量quantity在常规$nomor id的末尾添加了一个唯一ID:

<input type='text' name='quantity[]' id='quantity<?php echo"$nomor"; ?>' onkeyup="subtotal();">

PHP服务器将完成以下操作:

<input type='text' name='quantity[]' id='quantity1' onkeyup="subtotal();">
<input type='text' name='quantity[]' id='quantity2' onkeyup="subtotal();">
    ...
<input type='text' name='quantity[]' id='quantity5' onkeyup="subtotal();">

你知道有一个唯一的id,可以借助于for循环中运行的索引来引用JavaScript:

document.getElementById('quantity'+i).value

document.getElementById('packing_value'+i).value

也是如此

最后,计算出的值保存在正确的字段中:

document.getElementById('quantity_konversi'+i).value = hitung;

完整代码(可在http://phpfiddle.org/运行):

<script>
        function subtotal(konversi){
            console.log('subtotal function');
            for(var i = 1; i < 5+1; i++){
                //console.log('quantity'+i, document.getElementById('quantity'+i).value);
                //console.log('packing_value'+i, document.getElementById('packing_value'+i).value);
                var hitung = (document.getElementById('quantity'+i).value * document.getElementById('packing_value'+i).value);
                //document.forms.demoform.quantity_konversi.value = hitung; 
                document.getElementById('quantity_konversi'+i).value = hitung; 
                console.log(i, hitung);
            }
        } 
    </script>
<form id='demoform'>
<?php
    $jumlah=5;
    for($i=0; $i<$jumlah; $i++){
        $nomor = $i + 1;    
        echo"$nomor";
?>

        <input type='text' name='quantity[]' id='quantity<?php echo"$nomor"; ?>' onkeyup="subtotal();">
        X
        <input type='text' id="packing_value<?php echo"$nomor"; ?>" value='10' onkeyup="subtotal();">

        <input type='text' name='quantity_konversi[]' id='quantity_konversi<?php echo"$nomor"; ?>' placeholder='result ???'><br/>
<?php

    } //for end 
    $nomor++ 
?>

</form>