为了我,我无法得到过滤器(.filter(function(d,i){return d}))来消除“undefined”或“0”在这个数组上工作。
该脚本在Applescript applet中运行,并应将所有生成的url作为字符串返回。
var x = Array.prototype.slice.call(document.querySelectorAll(".product_card"))
.map(function(d,i){
var title = d.querySelector(".product_card__title"),
link = d.querySelector("a");
console.log(title);
console.log(link);
if(title && link && /Rocker/gi.test(title.textContent)){
return link.href
}
})
document.getElementById("result").textContent = JSON.stringify(x);
<div class="product_card powersearch__product_card">
<a href="/shop/XYZ" class="js-search-product-link">
<div class="product_card__image" style="background-image:url(https://image.jpg);"></div>
<div class="product_card__title">some rocker</div>
<div class="product_card__meta">€14</div></a></div>
<br>
<div class="product_card powersearch__product_card">
<a href="/shop/ZXY" class="js-search-product-link">
<div class="product_card__image" style="background-image:url(https://image.jpg);"></div>
<div class="product_card__title">returns undefined</div>
<div class="product_card__meta">€14</div></a></div>
<br>
<div id="result">
任何高度帮助的帮助
答案 0 :(得分:1)
首先,您可以通过使您的初始qSA
选择更加具体来摆脱一些内部DOM选择:".product_card a .product_card__title"
。
然后,您可以使用.filter()
返回检查每个元素.includes()
"rocker"
文本的结果。在映射.href
之前执行此。
最后,.map()
这些结果会导致每个.href
的{{1}},因为我们直接选择了带有文字的孩子。
.parentNode
&#13;
var x = Array.prototype.slice.call(document.querySelectorAll(".product_card a .product_card__title"))
.filter(function(d) {
return d.textContent.toLowerCase().includes("rocker")
})
.map(function(d) { return d.parentNode.href });
document.getElementById("result").textContent = JSON.stringify(x);
&#13;
当然,现代语法更清晰。
<div class="product_card powersearch__product_card">
<a href="/shop/XYZ" class="js-search-product-link">
<div class="product_card__image" style="background-image:url(https://image.jpg);"></div>
<div class="product_card__title">some rocker</div>
<div class="product_card__meta">€14</div>
</a>
</div>
<br>
<div class="product_card powersearch__product_card">
<a href="/shop/ZXY" class="js-search-product-link">
<div class="product_card__image" style="background-image:url(https://image.jpg);"></div>
<div class="product_card__title">returns undefined</div>
<div class="product_card__meta">€14</div>
</a>
</div>
<br>
<div id="result">