![](/img/trans.png)
[英]if else statement breaks when a class doesn't exist result in a null
[英]If class doesn't exist do this else ignore
嗨,我在 Javascript 中嘗試做的是查找 class '.promo' 是否存在於 '.productDetails' div 中,如果存在,則無需采取任何措施,但如果它不存在,那么我想要它在跨度標簽中打印副本。 我知道這可以在 jQuery 中完成,但希望在普通的 Javascript 中做到這一點。
var elem = document.querySelector('.product-details'); if(.elem.classlist.contains('.promo')){ document.querySelector('.title');innerHTML += "<span class="promo">Add Promo Banner</span>"; }
.product-details {border: 1px black solid; margin: 10px 0}
<div class="product-details"> <div class="title">Title</div> <div class="promo">Promo 20% off</div> </div> <div class="product-details"> <div class="title">Title</div> </div>
首先,JS 中的 case 很重要( classlist
!= classList
),應該是駝峰classList
。 此外, htmlString ( "<span class="promo">Add Promo Banner</span>"
) 的格式不正確。
您可以通過使用querySelectorAll()
獲取元素來檢查長度:
var elem = document.querySelectorAll('.product-details'); elem.forEach(function(el){ if(.el.querySelectorAll('.promo').length){ el.querySelector('.title');innerHTML += "<span class=promo>Add Promo Banner</span>"; } });
.product-details {border: 1px black solid; margin: 10px 0}
<div class="product-details"> <div class="title">Title</div> <div class="promo">Promo 20% off</div> </div> <div class="product-details"> <div class="title">Title</div> </div>
就 JS 而言,您的代碼中的問題只是語法。 該成員被稱為
<HTML element>.classList
您只是缺少大寫的 L。
elem.classList
不會返回".classNameA.classNameB"
,而是返回 class 屬性的實際字符串值,如下所示: "classNameA classNameB"
但是,如果您進行這些更改,我仍然認為您的代碼不會正常運行,因為您正在搜索一個元素以查找它不繼承的 class。 從"promo"
繼承的元素是您引用的元素的子元素。
您在特定代碼中查找的元素位於可迭代的elem.children
數組中。
您是否正在嘗試搜索頁面上所有元素的所有子元素以查找包含"promo"
的.classList
的繼承人? 如果是這樣,您應該檢查樹遍歷算法。 更明顯的實現是,您將從某個根目錄開始並通過深度優先或廣度優先搜索向下導航。 DOM 實際上只是一個巨大的元素樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.