概要
- JavaScriptで「個数」×「単価」の「小計」を出す注文フォームを作っています。
- 注文は MySQL db に保存され、PHP 経由で取得されます。
- 「単価」を手動で入力したいのですが、その数値を入力した後に乗算が行われることを望みます。
- 10 行の項目 (配列) があります。
- 記述されたすべてのコードは、期待どおりに正しく実行されます。
問題
- 私の JavaScript 関数は最初の行に対してのみ実行され、他の行に対しては実行されません。
- 項目タイプごとに、すべての行に対して実行したい。
マイコード
JS
function calc(){
baseprice=parseInt(document.getElementById("baseprice").value);
units=parseInt(document.getElementById("units").value);
x=baseprice*units;
document.getElementById("sub").value=x;
}
PHP/SQL
$alter=0;
//previous miscellaneous code
while($rows=mysql_fetch_array($sql))
{
$alter=$alter+1;
//edit
$subCalc="<td><input name='units_".$alter."' id='units_".$alter."' type='hidden' value=".$rows['SUM(pizza_orders.qty)']."><input name='baseprice_".$alter."' id='baseprice_".$alter."' type='text' size='2' onchange='calc(this);'></td><td><input name='sub_".$alter."' id='sub_".$alter."' type='text' size='3'></td></tr>";
//alternates the table row colour by modulus
if ($alter %2 ==0){
echo "<tr><td>".$rows['item_order']."</td>";
echo "<td>".$rows['SUM(pizza_orders.qty)']."</td>".$subCalc;
}else{
echo "<tr class=\"alt\"><td>".$rows['item_order']."</td>";
echo "<td>".$rows['SUM(pizza_orders.qty)']."</td>".$subCalc;
}
}
サンプル結果/状況
拡大
右下に総計を作成し、すべての小計フィールドを「onchange」として追加します。
subTotal=parseInt(document.getElementById("sub" + el.id.replace('baseprice', '')).value); document.getElementById("grandtotal")= subTotal+parseInt(document.getElementById("grandtotal").value);