對多個元素進行循環遍歷併計算每個元素的價格折扣
P粉506963842
2023-09-02 17:14:31
<p>我正在嘗試找到每個個體<code><div></code>的舊價格和新價格之間的百分比差異。目前,我的程式碼只能取得第一個<code><div></code>的百分比差異,並將相同的百分比差異循環到其餘的<code><div></code> ;中。有人知道如何更新此程式碼以針對每個個體<code><div></code>而不僅僅是循環第一個嗎?我想使用純JavaScript實作這個功能,不需要jQuery。 </p>
<p>
<pre class="brush:js;toolbar:false;">const priceDifference = () => {
const regPrice = document.querySelector('.old').innerText;
const salePrice = document.querySelector('.new').innerText;
const priceNumReg = parseFloat(regPrice.substring(1));
const priceNumSale = parseFloat(salePrice.substring(1));
const finalPrice = priceNumReg - priceNumSale;
const percentage = document.querySelectorAll('.percentage');
const percent = (finalPrice / priceNumReg) * 100;
for (i = 0; i < percentage.length; i ) {
if (percentage[i].textContent.trim() === '') {
percentage[i].textContent = ' (' percent.toFixed(0) '% OFF)';
}
}
};
priceDifference();</pre>
<pre class="brush:html;toolbar:false;"><div class="price">
<div class="old">$14.00</div>
<div class="new">$6.00</div>
<div class="percentage"></div>
</div>
<div class="price">
<div class="old">$12.00</div>
<div class="new">$5.00</div>
<div class="percentage"></div>
</div>
<div class="price">
<div class="old">$18.00</div>
<div class="new">$3.00</div>
<div class="percentage"></div>
</div></pre>
</p>
你必須循環遍歷每個
.price
元素,而不是每個.percentage
,因為你試圖執行的每個單獨的計算都是基於一個單獨的<div class="price">
的範圍。在循環內部進行所有的計算,例如目前的
priceElement
(它是你的<div class="price">
元素之一)。現在你可以使用
priceElement.querySelector
,而不是document.querySelector
。document.querySelector
在整個文件中找到第一個符合的元素,而priceElement.querySelector
將在該範圍內找到第一個符合的元素:priceElement
。所以函數看起來比較像這樣:
這段程式碼是有效的,但仍然有一些工作需要完成,例如缺少
i
的聲明和innerText
vs.textContent
,但這段程式碼也可以這樣縮短: