尝试为我的网上商店建立一个Javascript%年龄折扣计算器。问题是计算器计算出一些错误的产品2-10%。请帮忙,代码中有什么错误吗?
<script type="text/javascript">
$(document).ready(function() {
/*
Least allowed discount to show.
*/
var minDiscount = 15;
$('.gridArticlePrices').each(function() {
/* Get ordinary price */
var oldPrice = $(this).children('.gridArticlePriceRegular').html();
/* Get sale price */
var newPrice = $(this).children('.gridArticlePrice').children('.reducedPrice').html();
if ((oldPrice) && (newPrice)) {
/* Convert to numbers instead of strings */
var oldPrice = parseInt(oldPrice.replace("/[^0-9]/g", ""));
var newPrice = parseInt(newPrice.replace("/[^0-9]/g", ""));
/* Calcuate the precentage, rounded of to 0 decimals */
var discount = Math.round(100 - ((newPrice / oldPrice) * 100));
/* If the precentage is higher than "var min Discount" then write out the discount next to the products price.*/
if (discount >= minDiscount) {
$(this).parent().after("<div class='discount'>-" + discount + "%</div>");
}
}
});
});
</script>
答案 0 :(得分:0)
更新:
我使用parseFloat的原始建议是假设您的价格包含十进制组件。正如我现在看到的,它们实际上是整数,所以parseInt工作正常。
实际问题是你的replace()调用没有删除任何东西。你应该删除正则表达式周围的引号,然后它将删除你不想要的额外字符。
var oldPrice = parseInt(oldPrice.replace(/[^0-9]/g, ""));
var newPrice = parseInt(newPrice.replace(/[^0-9]/g, ""));
注意:如果确实需要处理小数价格,则需要添加“。”你正则表达式(所以它不会被删除),并使用parseFloat而不是parseInt。