我正在显示从MySQL表中使用的部件的数量和价格表中的记录,并将任何更改更新回数据库,但我还需要一个计算字段,数量* price = Amount。 我似乎无法让它工作。我是JavaScript的新手。 我使用了一个GetElementById,它在第一个总数中显示了一个NaN,然后我想到了它,我认为它可能会通过整个表格。
因此尝试在while循环中创建动态id但无法显示它。我不确定我是否在没有提交页面的情况下如何实现计算的正确轨道。 任何帮助,将不胜感激 谢谢。
<?php
while ($list_parts = mysqli_fetch_array($parts_result))
{
echo " <table border ='0' table width = 95%>";
echo '<td> <input type="hidden" value="'.$list_parts['unique_id'].'" name="changed_unique_id[]">';
echo '<td> <input type="hidden" value="'.$list_parts['job_number'].'" name="changed_job_number[]">';
echo '<td> Quantity <input type="text" value="'.$list_parts['qty'].'" name="changed_part_quantity[]" id="qty'.$list_parts['unique_id'].'" onkeypress="qty'.$list_parts['unique_id'].'">';
echo '<td> Description <input type="text" value="'.$list_parts['item_description'].'" name="changed_item_description[]">';
echo '<td> Part Number <input type="text" value="'.$list_parts['part_number'].'" name="changed_part_number[]">';
echo '<td> Part Price <input type="text" value="'.$list_parts['price'].'" name="changed_part_price[]" id="price'.$list_parts['unique_id'].'" onkeypress="price'.$list_parts['unique_id'].'">';
echo '<td> Total <input type="text" value="'.$list_parts['sub_total'].'" name="changed_part_sub[]" id="total'.$list_parts['unique_id'].'" >';
echo "</tr>";
}
echo "</table>";
?>
我的JavaScript如下
function showtotal(){
var quantity = document.getElementById("qty'.$list_parts['unique_id'].'").value;
var price = document.getElementById("price'.$list_parts['unique_id'].'").value;
var sum = parseInt(quantity) + parseInt(price);
document.getElementById("total'.$list_parts['unique_id'].'").value = sum;
}
答案 0 :(得分:1)
如果要在JavaScript代码中打印内容,则应插入php标记,以实现代码可读性和安全性。但问题是你试图“添加”你的“数量”和“$ list_parts”带有'。'的结果,那就是PHP代码,在JavaScript中,你使用'+'。
我还注意到在你的PHP代码中,你在while中创建了一个'table'元素,但只在外面关闭它。那么你的代码肯定会有错误,因为多个'table'将会打开,但只有一个是关闭的。你应该在while循环中移动'table'的闭包,或者在while循环之外移动开口。
编辑 - 在getElementById中我写了“qty +”但这是错误的,因为你创建的ID只是“qty”,所以JavaScript试图找到一个没有的ID存在。
所以你的JavaScript应该是:
javac -cp <pathToAnnotationProcessor.jar> <path to source.java>
答案 1 :(得分:0)
我非常感谢泰德的帮助。你的帖子通过向我展示它的理论如何运作帮助我解决它。之后它不会让我在javascript中使用php。我尝试了一种略有不同的方式。 我不太确定这是否是正式的做法,但仍然非常高兴。
while ($list_parts = mysqli_fetch_array($parts_result))
{
echo "<table border ='0' table width = 95%>";
echo '<td> <input type="hidden" value="'.$list_parts['unique_id'].'" name="changed_unique_id[]">';
echo '<td> <input type="hidden" value="'.$list_parts['job_number'].'" name="changed_job_number[]">';
echo '<td> Quantity <input type="text" onchange="showtotal('.$list_parts['unique_id'].')" value="'.$list_parts['qty'].'" name="changed_part_quantity[]" id="qty'.$list_parts['unique_id'].'">';
echo '<td> Description <input type="text" value="'.$list_parts['item_description'].'" name="changed_item_description[]">';
echo '<td> Part Number <input type="text" value="'.$list_parts['part_number'].'" name="changed_part_number[]">';
echo '<td> Part Price <input type="text" onchange="showtotal('.$list_parts['unique_id'].')" value="'.$list_parts['price'].'" name="changed_part_price[]" id="price'.$list_parts['unique_id'].'" >';
echo '<td> Total <input type="text" id="total'.$list_parts['unique_id'].'" value="'.$list_parts['sub_total'].'" name="changed_part_sub[]">';
echo "</tr>";
echo $list_parts['unique_id'];
echo'(total'.$list_parts['unique_id'].')';
echo "</table>";
}
?>
的Javascript
function showtotal(id){
var quantity = document.getElementById('qty'+id).value;
var price = document.getElementById('price'+id).value;
var sum = parseInt(quantity,10)*parseInt(price,10);
document.getElementById('total'+id).value = sum;
}
非常感谢
Rob Grain