Javascript 为什么不是';t总计输入中设置的行的计算值?
我有一段代码无法计算数量*价格-折扣=总数 数量值从数据库中检索。为什么不在该行的相应总计输入上设置计算的总计Javascript 为什么不是';t总计输入中设置的行的计算值?,javascript,php,Javascript,Php,我有一段代码无法计算数量*价格-折扣=总数 数量值从数据库中检索。为什么不在该行的相应总计输入上设置计算的总计 <?php $con = mysqli_connect('localhost', 'root', '', 'a.karat'); if(isset($_POST['product_id'])) { $prno=$_POST['prno']; $i=1; $sql = mysqli_query($con,"select * from detail_pr wh
<?php
$con = mysqli_connect('localhost', 'root', '', 'a.karat');
if(isset($_POST['product_id']))
{
$prno=$_POST['prno'];
$i=1;
$sql = mysqli_query($con,"select * from detail_pr where prNo='$prno'");
while ($r = mysqli_fetch_array($sql)) {
echo
'<tr>
<td><input type="checkbox" name="check[]" id="check'.$i.'" value="'.$i.'"></td>
<td><label for="productCode"></label>
<input type="text" name="productCode'.$i.'" id="productCode'.$i.'" readonly value="'.$r["productCode"].'" size="12" ></td>
<td><label for="productName"></label>
<input type="text" name="productName'.$i.'" id="productName'.$i.'" readonly value="'.$r["productName"].'"size="35" ></td>
<td><label for="qty"></label>
<input type="number" onkeyup="calc(this);" name="qty'.$i.'" id="qty'.$i.'" readonly value="'.$r["qty"].'" size="8" ></td>
<td><input type="number" onkeyup="calc(this);" name="price'.$i.'" id="price'.$i.'" size="10" min="1" max="99" onchange="calc(this);" ></td>
<td><input type="number" onkeyup="calc(this);" name="discount'.$i.'" id="discount'.$i.'" size="10" min="0" max="99" onchange="calc(this);"></td>
<td><input type="number" name="total'.$i.'" id="total'.$i.'" size="10" min="1" max="99" onchange="calc(this);" ></td>
</tr>';
$i++;
}
}
?>
<script>
function calc(id) {
//var row=id.parentNode.parentNode;
var quant=row.cells[4].getElementsByTagName('input')[0].value;
var price=row.cells[5].getElementsByTagName('input')[0].value;
var disc=row.cells[6].getElementsByTagName('input')[0].value;
if(disc==null || disc=='') {
res=parseFloat(quant)*parseFloat(price);
} else {
var res=(parseFloat(quant)*parseFloat(price))- (parseFloat(quant)*parseFloat(price)*(parseFloat(disc)/100));
}
row.cells[7].getElementsByTagName('input')[0].value=res;
}
</script>
我看到您在脚本中使用了row参数,并对其进行了注释。就在函数calc声明之后 要将计算出的总计放入行的最终输入中,只需进行几项更改:
- 删除第一行上的(即
/
):
function calc(id) {
//var row = id.parentNode.parentNode;
^
(这可能是试图用其他方式定义行的结果)
- row变量中单元格的索引被关闭1。这是因为
JavaScript数组的索引为零:数组的第一个元素位于索引0处,最后一个元素位于等于数组长度属性值减去1的索引处。
例如,要获取quant的值,请更新此行:
var quant = row.cells[4].getElementsByTagName('input')[0].value;
为此:
var quant = row.cells[3].getElementsByTagName('input')[0].value;
同样,对于price和disc的值,以及更新总数(即,row.cells[6]。getElementsByTagName('input')[0]。value=res;
)
请参见以下示例中应用的这些更改:
函数计算(id){
var row=id.parentNode.parentNode;
var quant=row.cells[3]。getElementsByTagName('input')[0]。值;
var price=row.cells[4]。getElementsByTagName('input')[0]。值;
var disc=row.cells[5]。getElementsByTagName('input')[0]。值;
如果(disc==null | | disc==''){
res=parseFloat(数量)*parseFloat(价格);
}否则{
var res=(parseFloat(quant)*parseFloat(price))-(parseFloat(quant)*parseFloat(price)*(parseFloat(disc)/100));
}
行。单元格[6]。getElementsByTagName('input')[0]。value=res;
}
代码
名称
量
价格
优惠
全部的
wooooow这很好用,上帝保佑你@Sam Onela