【发布时间】:2021-09-01 04:17:50
【问题描述】:
我练习 DOM 操作(纯香草 JS),我需要检查所有价格,如果其中任何价格超过 3,00 英镑,则整个产品卡应将其背景颜色更改为红色。 由于某些未知原因,如果我只更改价格 div,代码运行良好,但是,当我尝试定位整张卡片时,它会将所有卡片变为红色,而不仅仅是价格超过 £ 的卡片3,00
我不知道我做错了什么。任何帮助将不胜感激
这里还有从控制台测试代码的链接: :https://www.monoprix.fr/courses/legumes-frais-mpx_c0000400?page=3
这是我的sn-p:
function exercise_3() {
var price = document.querySelectorAll(".grocery-item__normal-price");
var block = document.querySelectorAll(".grocery-item-item");
let changePriceColor = 300;
block.forEach((card) => {
price.forEach((p) => {
var a = p.innerText.slice(0, 4).replace(/,/g, "");
if (a > changePriceColor) {
card.style.background = "red";
} else {
return "";
}
});
});
}
exercise_3();
<div class="grocery-item-item">
<div class="grocery-item__description-offre">
<a href="/courses/artichaut-blanc--2414383-p">
<div class="grocery-item__description-wrapper">
<div class="grocery-item__dimmer"></div>
<div class="grocery-item__product-card-content discount">
<div class="grocery-item__product-img">
<img
data-tc='["","tc_event_20",""]'
data-tcdata='{"tc_event_11":0,"tc_event_20":{"ecommerceGA":"product_click","productId":2414383,"quantity":0},"tc_event_39":{"action":"cross sell | undefined","position":0}}'
src="https://cdn.monoprix.fr/cdn-cgi/image/width=180,quality=60,format=auto,metadata=none/assets/images/grocery/2414383/580x580.jpg"
width="100"
height="100"
centered="true"
>
</div>
<div class="grocery-item__description">
<div class="grocery-item-brand">
<p></p>
</div>
<div class="grocery-item-range">ARTICHAUT BLANC</div>
<div class="conditioning-description">L'unité</div>
</div>
</div>
</div>
<div class="withPromotionBand-sc-1jbwr08-0 cfLNRM grocery-item__promotions_band">
<div class="promo_map">
<div class="promo_band _red">
<div class="promo_red">-50%</div>
sur le 2ème
</div>
{" "}
</div>
</div>
</a>
</div>
<div class="grocery-item__price-cart">
<div class="grocery-item__price-wrapper">
<div class="grocery-item__price-line-through"></div>
<div class="grocery-item__normal-price">2,00 €</div>
<div class="grocery-item__price-unit">
<p>2,00 € / p</p>
</div>
</div>
<div class="styledAddToCartButton-sc-15efgme-0 fNiyOV">
<div
class="add-to-cart-button__add-button"
id="addToCartButton-2414383"
value="AddToCart"
data-tc='["tc_event_20",""]'
data-tcdata='{"tc_event_20":{"ecommerceGA":"product_add","productId":2414383,"quantity":0},"tc_event_38":{"position":0,"productId":2414383}}'
>
<img
src="/contents/images/cart_icon.svg"
width="40"
height="40"
alt="panier"
class="pannel"
>
</div>
</div>
</div>
</div>
</>
</>;
【问题讨论】:
-
你必须发布 HTML
-
@JaromandaX 完成
-
深思 @Alessandro meta.stackexchange.com/questions/473/…
-
如果您将其设为代码 sn-p,只需单击“运行代码 sn-p”即可在此处重现(因此我们可以看到什么不起作用),这更容易理解我/我们
-
问题在于你如何构建你的 for 循环,它们会针对每张卡片进行迭代,并检查每个价格条件。
标签: javascript for-loop dom foreach