2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果我正確理解你的問(wèn)題,這就是你要找的。
let labels = document.querySelectorAll(".sc-account-rows__row__label");
[...labels].forEach(label => {
if (label.innerText === "RTF") {
let price = label.parentElement.querySelector(".sc-account-rows__row__price").innerText;
console.log(price);
}
})
Console: "-$ 1.485"
如果您需要使用除 RTF 之外的額外標(biāo)簽:
let words = ["RTF", "something", "else"];
// change if condition to
if (words.includes[label.innerText]) {...}

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
另一種方法是使用 XPath,這是一種舊的 XML 導(dǎo)航標(biāo)準(zhǔn),也適用于 HTML。在本例中,您正在尋找一個(gè)類div
為“sc-account-rows__row__price”的類,它div
附近有另一個(gè)類為“sc-account-rows__row__label”且文本為“RTF”的類。
div 的 XPath 是
//div[@class="sc-account-rows__row__label"][text()="RTF"]/following-sibling::div[@class="sc-account-rows__row__price--container"]//div[@class="sc-account-rows__row__price"]
由于 price--container/price 的嵌套性質(zhì),它有點(diǎn)復(fù)雜div
。
要獲取文本,您將使用document.evaluate
:
function getPriceByLabel(label) {
? // change this to a parent element if you can; it will speed up the process.
? const contextNode = document;
? const priceResults = document.evaluate(`//div[@class="sc-account-rows__row__label"][text()="${label}"]/following-sibling::div[@class="sc-account-rows__row__price--container"]//div[@class="sc-account-rows__row__price"]`, contextNode, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null);
? const priceElement = priceResults.singleNodeValue;
? const price = priceElement.textContent;
? return price;
}
console.log(getPriceByLabel("RTF"));
console.log(getPriceByLabel("some text"));
<li class="sc-account-rows__row">
? <div class="sc-account-rows__row__label">RTF</div>
? <div class="sc-account-rows__row__price--container">
? ? <div class="sc-account-rows__row__price">-$ 1.485</div>
? </div>
</li>
<li class="sc-account-rows__row">
? <div class="sc-account-rows__row__label">some text</div>
? <div class="sc-account-rows__row__price--container">
? ? <div class="sc-account-rows__row__price">-$ 2.418</div>
? </div>
</li>
我把它放在一個(gè)帶有標(biāo)簽并吐出價(jià)格的函數(shù)中。
添加回答
舉報(bào)