有人可以帮我吗?我试图通过类名称选择多个元素。直到页面comments文本中间的某处不可用,一切都很好,只有审阅者的姓名和已审阅的产品。如果该特定行不存在该元素,如何设置它以跳过该元素并移至下一行?
编辑:因此,在提出建议后,我尝试使用以下代码,但控制台表示-forEach不是函数。我正在以下页面上运行它:https://www.etsy.com/shop/FamilyshirtsCo/reviews
var productRows = document.getElementsByClassName("div.flag-body pb-xs-0");
productRows.forEach(function(productRow){
var name = productRow.querySelector(".p.shop2-review-attribution");
var comments = productRow.querySelector(".p.prose break-word m-xs-0");
var product = productRow.querySelector(".flag-body hide-xs hide-sm");
var final = product[i].innerText +" | "+ price[i].innerText +" | "+
quantity[i].innerText;
console.log(final);
});
getElementsByClassName返回具有指定类的所有元素,无论其同级元素还是父元素。在这里,您可以为该行的父类提供一些类:
因此html结构如下:
<div class="product-row">
<div class="product">
some product
</div>
<div class="price">
some price
</div>
<div class="quantity">
some quantity
</div>
</div>
Javascript:
var productRows = document.getElementsByClassName("product-row");
productRows.forEach(function(productRow){
var product = productRow.querySelector(".product");
var price = productRow.querySelector(".price");
var quantity = productRow.querySelector(".quantity");
var order = product[i].innerText +" | "+ price[i].innerText +" | "+ quantity[i].innerText;
console.log(order);
});
我希望这能解决您的问题
必须是for循环,而不是forEach。这是HTMLCollection而不是简单的数组。
var productRows = document.getElementsByClassName("product-row");
for ( var x = 0; x < productRows.lenght; x++) {
var product = productRows[x].querySelector(".product");
var price = productRows[x].querySelector(".price");
var quantity = productRows[x].querySelector(".quantity");
var order = product[i].innerText + " | " +
price[i].innerText + " | " +
quantity[i].innerText;
console.log(order);
};
<div class="product-row">
<div class="product">
some product
</div>
<div class="price">
some price
</div>
<div class="quantity">
some quantity
</div>
</div>