Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算香草JS中产品的折扣%_Javascript_Foreach_Percentage_Discount - Fatal编程技术网

Javascript 计算香草JS中产品的折扣%

Javascript 计算香草JS中产品的折扣%,javascript,foreach,percentage,discount,Javascript,Foreach,Percentage,Discount,嗨,我想做的是计算使用Vanilla JS销售的产品的折扣百分比。因此,如果存在销售价格“.product-price\uuuuu折扣”,那么我想计算出该产品的折扣百分比 到目前为止,我能计算出第一种产品的折扣。在第二个产品上,它似乎打印了与第一个产品相同的折扣&最后一个产品不在销售中,因此忽略这一点是正确的。我还知道.length有一个错误,但不知道如何解决 var模式=/[^0-9\.]/g; var price=document.querySelectorAll(“.product-sl

嗨,我想做的是计算使用Vanilla JS销售的产品的折扣百分比。因此,如果存在销售价格“.product-price\uuuuu折扣”,那么我想计算出该产品的折扣百分比

到目前为止,我能计算出第一种产品的折扣。在第二个产品上,它似乎打印了与第一个产品相同的折扣&最后一个产品不在销售中,因此忽略这一点是正确的。我还知道.length有一个错误,但不知道如何解决

var模式=/[^0-9\.]/g;
var price=document.querySelectorAll(“.product-slab___;u price”);
price.forEach(函数(el){
如果(!el.querySelector('.product-price\uu折扣')。长度){
var wasPrice=parseFloat(document.querySelector('.product-price_uuu-was')).textContent.replace(pattern,“”)/100;
var newPrice=parseFloat(document.querySelector('.product-price\uuu-discount').textContent.replace(pattern,“”)/100;
var减去价格=(wasPrice-newPrice);
var dividePrice=(减去价格/wasPrice);
var乘数=(分割价格*100);
el.querySelector('.discountPercentage').innerHTML=multiplyPrice.toFixed(0)+“和#37”;
} 
});
。产品价格{
文字装饰:线条贯通;
}
.产品价格折扣{
颜色:红色;
}

Was€10,00
现在&欧元;8,00
&欧元;15,00
&欧元;10,00
&欧元;15,90

可以在这里找到问题

var wasPrice = parseFloat(document.querySelector('.product-price__was').textContent.replace(pattern, "")) / 100;
var newPrice = parseFloat(document.querySelector('.product-price__discount').textContent.replace(pattern, "")) / 100;
您正在使用
document.querySelector
,但是,您需要
forEach
提供的
el
元素,如下所示:

var wasPrice = parseFloat(el.querySelector('.product-price__was').textContent.replace(pattern, "")) / 100;
var newPrice = parseFloat(el.querySelector('.product-price__discount').textContent.replace(pattern, "")) / 100;

另外,为了防止
长度
错误,请检查
查询选择器
是否找到了任何内容,方法是检查
是否为空
,而不是关闭
.length

if (el.querySelector('.product-price__discount') !== null) {

请看这个改进的示例:

var模式=/[^0-9\.]/g;
var price=document.querySelectorAll(“.product-slab___;u price”);
price.forEach(函数(el){
如果(el.querySelector('.product-price\uu折扣')!==null){
var wasPrice=parseFloat(el.querySelector('.product-price_uuu-was')).textContent.replace(pattern,“”)/100;
var newPrice=parseFloat(el.querySelector('.product-price\uuuu-discount').textContent.replace(pattern,“”)/100;
var折扣=100-(新价格/原价)*100;
el.querySelector('.discountPercentage').innerHTML=discount.toFixed(0)+“和#37”;
} 
});
。产品价格{
文字装饰:线条贯通;
}
.产品价格折扣{
颜色:红色;
}

Was€10,00
现在&欧元;8,00
&欧元;15,00
&欧元;10,00
&欧元;15,90

感谢您的介绍和解释。唯一的问题是计算结果似乎是错误的。他们应该打20%和33%的折扣,如果现在是另一种方式,那么计算应该是:
var折扣=100-(newPrice/wasPrice)*100因为您正在寻找差异。我已经确定了我的答案!是的,太好了,再次感谢你的解释。