我在做购物车。我能根据数量计算产品价格。
现在我计算的总额取决于小计和运费与产品价格。
当我增加产品数量时,它会计算产品价格,但不会计算小计和总金额。
或者有没有其他安全的方法来处理这个问题?
你能帮我解决这个问题吗?
$('a.ddd').click(function() {
var $productContainer = $(this).closest('div.sp-quantity');
var $pro_list = $(this).closest('tr.pro-list');
var productPrice = parseFloat($pro_list.find('span.price_cal').text());
var $quantityInput = $productContainer.find('input.quntity-input');
var newQuantity = parseFloat($quantityInput.val()) + parseFloat($(this).data('multi'));
if (newQuantity>= 1) {
// Refresh quantity input.
$quantityInput.val(newQuantity);
// Refresh total div.
var lineTotal = productPrice*newQuantity;
$pro_list.find('td.total_amount').data('price','£'+lineTotal).html('£'+lineTotal);
}
});
.sp-quantity {
width:124px;
height:42px;
float: left;
}
.sp-minus {
width:40px;
height:40px;
border:1px solid #e1e1e1;
float:left;
text-align:center;
}
.sp-input {
width:40px;
height:40px;
border:1px solid #e1e1e1;
border-left:0px solid black;
float:left;
}
.sp-plus {
width:40px;
height:40px;
border:1px solid #e1e1e1;
border-left:0px solid #e1e1e1;
float:left;
text-align:center;
}
.sp-input input {
width:30px;
height:34px;
text-align:center;
border: none;
}
.sp-input input:focus {
border:1px solid #e1e1e1;
border: none;
}
.sp-minus a, .sp-plus a {
display: block;
width: 100%;
height: 100%;
padding-top: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<table class="table cart-table">
<thead class="table-headings">
<tr>
<th class="pname">Product</th>
<th class="punit">Unit Price</th>
<th class="pquant">Quantity</th>
<th class="ptotal">Total price</th>
</tr>
</thead>
<?php if(!empty($_SESSION['products'])):
foreach($_SESSION['products'] as $key=>$product):?>
<tbody>
<tr class="pro-list">
<td>
<div class="ordered-product cf">
<div class="pro-img">
<img src="admin/images/products/<?php echo $product['p_images'];?>" alt=" prodcut image">
</div>
<div class="pro-detail-name">
<h3><?php echo $product['p_name'];?></h3>
</div>
<?php
$p_delete=$product['p_id'];
//$decrypted_delete_id = decryptIt($p_delete);
$encrypted_user_id = encryptIt($p_delete);
$delete_product_id=urlencode($encrypted_user_id);
?>
<a href="my-cart?action=empty&deletekey=<?php echo $delete_product_id;?>" class="cross-cta"><i class="fa fa-times" aria-hidden="true"></i></a>
</div>
</td>
<td>£<span class="price_cal"><?php echo $product['p_currentprice'];?></span></td>
<td>
<div class="sp-quantity">
<div class="sp-minus fff"><a class="ddd" href="javascript:void(0)" data-multi="-1">-</a></div>
<div class="sp-input">
<input type="text" class="quntity-input" value="<?php echo $product['qty'];?>" />
</div>
<div class="sp-plus fff"><a class="ddd" href="javascript:void(0)" data-multi="1">+</a></div>
</div>
</td>
<?php $single_total = $product['qty']*$product['p_currentprice'];?>
<td class='total_amount' data-price='£<?php echo $single_total;?>'>£<?php echo $single_total;?></td>
</tr>
<?php $total = $total+$single_total;
$_SESSION['total_cost']=$total;
endforeach;?>
<tr class="pro-list">
<td></td>
<td></td>
<td><span>Subtotal</span></td>
<td class='total_amount' data-price='£<?php echo $single_total;?>'>£<?php echo $single_total;?></td>
<!-- <td><span>Shiping Cost</span></td>
<td><i class="fa fa-fighter-jet" aria-hidden="true"></i>£<?php echo $total;?></td> -->
</tr>
<tr class="pro-list">
<td></td>
<td></td>
<td><span>Total Cost</span></td>
<td>£<?php echo $total;?></td>
</tr>
</tbody>
<?php endif;?>
</table>
添加到下面的代码就可以了!
添加了一些类名,以便于查找值。使用jQuery将每个产品价格添加到小计,并显示在小计行中。然后在总数中加上20个运费。jQuery是非常不言自明的。
updateTotal();
$('a.ddd').click(function() {
var $productContainer = $(this).closest('div.sp-quantity');
var $pro_list = $(this).closest('tr.pro-list');
var productPrice = parseFloat($pro_list.find('span.price_cal').text());
var $quantityInput = $productContainer.find('input.quntity-input');
var newQuantity = parseFloat($quantityInput.val()) + parseFloat($(this).data('multi'));
if (newQuantity >= 1) {
// Refresh quantity input.
$quantityInput.val(newQuantity);
// Refresh total div.
var lineTotal = productPrice * newQuantity;
$pro_list.find('td.total_amount').html('£' + lineTotal);
$pro_list.find('td.total_amount').data('price', lineTotal); //update data-price
}
updateTotal();
});
function updateTotal() {
var subTotal = 0;
var currencySymbol = "£";
//start getting the total amounts from each product row.
//add them as a subtotal.
$("tr.pro-list > td.total_amount").each(function(index, element) {
subTotal += parseFloat($(element).data("price")); //more secure to use data!
});
var total = subTotal + $("tr.pro-list.ship > td[data-price]").data("price");
$("tr.pro-list.sub > td.subtotal").html(currencySymbol + "" + subTotal);
$("tr.pro-list.total > td.total").html(currencySymbol + "" + total);
}
.sp-quantity {
width: 124px;
height: 42px;
float: left;
}
.sp-minus {
width: 40px;
height: 40px;
border: 1px solid #e1e1e1;
float: left;
text-align: center;
}
.sp-input {
width: 40px;
height: 40px;
border: 1px solid #e1e1e1;
border-left: 0px solid black;
float: left;
}
.sp-plus {
width: 40px;
height: 40px;
border: 1px solid #e1e1e1;
border-left: 0px solid #e1e1e1;
float: left;
text-align: center;
}
.sp-input input {
width: 30px;
height: 34px;
text-align: center;
border: none;
}
.sp-input input:focus {
border: 1px solid #e1e1e1;
border: none;
}
.sp-minus a,
.sp-plus a {
display: block;
width: 100%;
height: 100%;
padding-top: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<table>
<tbody>
<tr class="pro-list">
<td>
<div class="ordered-product cf">
<div class="pro-detail-name">
<h3>ProductName</h3>
</div>
</div>
</td>
<td>£<span class="price_cal">55</span></td>
<td>
<div class="sp-quantity">
<div class="sp-minus fff"><a class="ddd" href="javascript:void(0)" data-multi="-1">-</a></div>
<div class="sp-input">
<input type="text" class="quntity-input" value="2" />
</div>
<div class="sp-plus fff"><a class="ddd" href="javascript:void(0)" data-multi="1">+</a></div>
</div>
</td>
<td class='total_amount' data-price='110'>£110</td>
</tr>
<tr class="pro-list">
<td>
<div class="ordered-product cf">
<div class="pro-detail-name">
<h3>ProductName</h3>
</div>
</div>
</td>
<td>£<span class="price_cal">45</span></td>
<td>
<div class="sp-quantity">
<div class="sp-minus fff"><a class="ddd" href="javascript:void(0)" data-multi="-1">-</a></div>
<div class="sp-input">
<input type="text" class="quntity-input" value="2" />
</div>
<div class="sp-plus fff"><a class="ddd" href="javascript:void(0)" data-multi="1">+</a></div>
</div>
</td>
<td class='total_amount' data-price='90'>£90</td>
</tr>
<tr class="pro-list sub">
<td></td>
<td></td>
<td><span>Subtotal</span></td>
<td class="subtotal">£110</td>
</tr>
<tr class="pro-list ship">
<td></td>
<td></td>
<td><span>Shipping charges</span></td>
<td data-price="20">£20</td>
</tr>
<tr class="pro-list total">
<td></td>
<td></td>
<td><span>Total Amount</span></td>
<td class="total">£110</td>
</tr>
</tbody>
</table>
我想知道如何计算的累计总和在AnyLogic中。具体地说,我有一个循环事件,每周改变一个参数的值。从这个参数我想计算它收到的值的累计总和,我怎么做呢? 该事件是循环模式的超时。操作是: "name_parameter"=圆形(max(正常(10,200),0));
问题内容: 我有这个MySQL查询: 返回如下内容: 我真正想要的是末尾的另一列以显示运行总计: 这可能吗? 问题答案: 也许对您来说是一个更简单的解决方案,并且可以防止数据库不得不执行大量查询。这仅执行一个查询,然后在一次通过中对结果进行一些数学运算。 这将为您提供一个额外的RT(运行总计)列。不要错过顶部的SET语句来首先初始化运行中的total变量,否则您将只获得一列NULL值。
基于在WooCommerce回答代码中启用百分比费用的添加结账复选框字段,我在结账页面上创建了一个复选框。 当它被检查时,它收取15%的货运代理费。 目前,此费用是从小计中计算出来的,并与订单总值相加。 我需要一个解决方案,这个费用是从小计运费的总和计算出来的,并且没有添加到订单总价值中。 我将把“费用”改名为“押金”。 请查看屏幕截图:
问题内容: 想象一下下表(称为): 我想要一个按日期顺序返回运行总计的查询,例如: 我知道在SQL Server 2000/2005/2008中可以通过多种方式进行此操作。 我对使用aggregating-set-statement技巧的这种方法特别感兴趣: …这是非常有效的,但是我听说周围存在一些问题,因为您不一定能保证该语句将以正确的顺序处理行。也许我们可以获得有关该问题的明确答案。 但是,人
问题内容: 我有这个MySQL查询: 返回如下内容: 我真正想要的是末尾的另一列显示运行总计: 这可能吗? 问题答案: 也许这对您来说是一个更简单的解决方案,并且可以防止数据库不得不执行大量查询。这仅执行一个查询,然后在一次通过中对结果进行一点数学运算。 这将为您提供一个额外的RT(运行总计)列。不要错过顶部的SET语句来首先初始化运行的total变量,否则您将只获得一列NULL值。
问题内容: 在没有应用任何条件的情况下,对表中的行总数进行计数的最佳MySQL命令是什么?我正在通过php执行此操作,所以也许有一个php函数可以为我执行此操作?我不知道。这是我的php的示例: 问题答案: