Javascript乘以2个字段,在PHP循环中以第3个答案循环

时间:2015-07-25 00:29:48

标签: javascript while-loop field

我正在显示从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;
}

2 个答案:

答案 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