0

我正在使用 PHP 将 30 个烘焙项目从 mySQL 数据库检索到动态 HTML 表中。检索到的数据是ProductItem(主键)、WeightPrice。我的代码还为每个项目创建了一个名为Quantity的 INPUT 框,以便用户可以输入他想要的案例数。下面是用于生成动态表的一段代码:

        $i=0;

    while ($i < $num) {
        $Item=mysql_result($result,$i,"Item");
        $Product=mysql_result($result,$i,"Product");
        $Weight=mysql_result($result,$i,"Weight");
        $BGPrice=mysql_result($result,$i,"BGPrice");

    echo "<tr>";
    echo "<td>$Product</td>";
    echo "<td><INPUT NAME=Item size=5 value=$Item READONLY></td>";
    echo "<td><INPUT NAME=Weight size=5 value=$Weight READONLY></td>";
    echo "<td><INPUT NAME=Price size=5 value=$BGPrice READONLY></td>";
    echo "<td><INPUT NAME=Quantity size=5 value=0 tabindex=$i></td>";
    echo "<td><INPUT NAME=ExtPrice size=5 value=0 READONLY></td>";
    echo "<td><INPUT NAME=TotalWt size=5 value=0 READONLY></td>";
    echo "</tr>";

    $i++;
    }

我需要 JavaScript 来调用一个函数,并在用户输入他想要订购的箱子数量后立即计算扩展价格 ( ExtPrice ) 和总重量 ( TotalWt ) 的值。

这是我的挣扎:这个动态表中有 30 个项目,每个项目的 INPUT NAME 都是相同的。如何创建一个函数来更新每个产品的ExtPriceTotalWt ?

4

2 回答 2

0

您的 JavaScript 不应直接input按名称引用每个。相反,获取对同一行中相邻单元格的引用。

假设您有一个重新计算结果的提交按钮,下面是一个示例:

document.getElementById("sub").addEventListener("click", function(e) {
    var i, row;
    var rows = document.getElementsByTagName("tr");
    // process each row individually
    for (i = 0, row; row = rows[i++];) {
        totalsForRow(row);
    }
    e.preventDefault();
}, false);

// updates the totals for each row
function totalsForRow(tr) {
    var j, inp, fields = {};
    var inputs = tr.getElementsByTagName("input");
    if (!inputs || inputs.length === 0)
        return;
    // map each input by name
    for (j = 0; inp = inputs[j++];) {
        fields[inp.name] = inp;
    }
    // update totals for this row, using the stored ref to the input
    fields.TotalWt.value = fields.Weight.value * fields.Quantity.value;
    fields.ExtPrice.value = fields.Price.value * fields.Quantity.value;
}

这不会进行任何错误检查,并且可以通过多种方式进行改进。它只是为了说明一种方法。

请参阅一个工作示例

于 2011-02-23T20:55:35.933 回答
0

您可以使用该$i变量来唯一标识每个输入

echo "<td><INPUT NAME=Item id='item$i' size=5 value='$Item' READONLY></td>";

并且作为旁注使用引号或双引号来换行$Item,因为它可能包含空格等。

于 2011-02-23T20:58:23.513 回答