-1

我已经使用我已经更改以满足我的需要的javascript在表中动态创建了行,在这个动态创建的表中,我想将Qty乘以价格并将其放入总框中,

html

<table>       
    <tbody id="plateVolumes">
        <tr>
            <td><input type="checkbox" value="None" id="chk" name="chk[]" /></div></td>
            <td><input type='text' name='qty' id='qty' class="qty" placeholder='Qty' /></td>
            <td><select name="productdescription[]" class="productdescription" id="productdescription">
                <option value="Product">Product</option>
                <option value="Product01" label="Product01">Product01</option>
                <option value="Product02" label="Product02">Product02</option>
                <option value="Product03" label="Product03">Product03</option>
                <option value="Product04" label="Product04">Product04</option>
                <option value="Product05" label="Product05">Product05</option>
                <option value="Product06" label="Product06">Product06</option>
                </select></td>
            <td><input type='text' name='price[]' id='price' class="price" placeholder='Price (&pound;)' onChange="WO()" /></td>
            <td><input type='text' name='totalprice[]' id='totalprice' class="price" placeholder='Total Price&nbsp;(&pound;)' /></td>
        </tr>
    </tbody>
</table>

我正在使用此 javascript 代码将值相加,但这仅适用于不是由代码创建的第一行:

javascript

<script>
function WO() {

var qty = document.getElementById('qty').value;

var price = document.getElementById('price').value;

answer = (Number(qty) * Number(price)).toFixed(2);  

document.getElementById('totalprice').value = answer;   
}
</script>

我对javascript很陌生,所以我想知道是否有办法将它应用到动态行,但是当我将它们传递给我的php邮件程序时将它们分开。

编辑:我一直在玩代码,我离得到我需要的答案有点近了,但我仍然不知道如何让它给我想要的答案,

function WO() {
for (var i = 0; i < rowCount; i++) {

var qty = document.getElementsByClassName('qty').value;

var price = document.getElementsByClassName('price').value;

var answer = (Number(qty) * Number(price)).toFixed(2);

document.getElementsByClassName('totalprice[' + i + ']').innerHTML = answer;
}
}
4

2 回答 2

1

这有帮助,我问了一个创建这个的朋友,只是想我会添加它以防其他人想知道

function WO() {
var tbody = document.getElementById("plateVolumes");

for(var i = 0; i < tbody.rows.length; i++) {
    var row = tbody.rows[i];
    var qty = row.cells[1].childNodes[0].value;
    var price = row.cells[3].childNodes[0].value;
    var answer = (Number(qty) * Number(price)).toFixed(2);
    row.cells[4].childNodes[0].value = answer;
    }
}
于 2014-03-11T09:12:05.003 回答
0

在 HTML 中,id 应该是唯一的。当您通过 id 获取元素时,它总是返回它获得的第一个元素。

我建议改用类。对行运行循环并计算总数。

这将是一个更接近的解决方案......虽然我没有测试过。

    var trNodes = document.getElementById('plateVolumes').childNodes;
    for(var i=0; i < trNodes.length; i++) {

        var qty = trNodes[i].getElementsByClassName('qty').value;

        var price = trNodes[i].getElementsByClassName('price').value;

        var answer = (Number(qty) * Number(price)).toFixed(2);

        trNodes[i].getElementsByClassName('totalprice').innerHTML = answer;
    }

参考

于 2014-03-10T10:18:39.787 回答