我使用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 (£)' onChange="WO()" /></td>
<td><input type='text' name='totalprice[]' id='totalprice' class="price" placeholder='Total Price (£)' /></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;
}
}
答案 0 :(得分: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;
}
}
答案 1 :(得分: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;
}