簡體   English   中英

如果 class 不存在,請忽略

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM