我想显示每个行数据数组的总和值。我有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>
答案 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>