gpt4 book ai didi

javascript - 如何在所有后代文本节点(Javascript)中搜索值?

转载 作者:行者123 更新时间:2023-11-27 23:02:10 27 4
gpt4 key购买 nike

所以基本上我正在制作一个 Chrome 扩展程序,它根据受欢迎程度(销售次数)对 Ebay 上的搜索结果进行排序。为此,我需要找到所有 li 元素,这些元素具有包含文本 ...+ Sold 的后代文本节点,其中 ... 是一个数字。
基本上,Ebay 上的搜索结果如下所示:

<li class="s-item">
<div class="s-item__wrapper clearfix">
<div class="s-item__image-section">
<!-- other stuff -->
</div>
<div class="s-item__info clearfix">
<!-- other stuff -->
<div class="s-item__details clearfix">
<!-- other stuff -->
<div><span><span>62+ Sold</span></span></div>
</div>
</div>
</div>
</li>

在每个 li 元素中,我必须搜索文本 Sold 并从该文本节点中提取数字以进一步处理它。我该怎么做?

最佳答案

您不能仅通过使用 childNodeschildren 属性来做到这一点,因为它们仅返回子节点而不是当前节点的所有后代。所以你必须为此编写自己的函数,例如:

function getDescendants(node, arr) {
var i;
arr = arr || [];
for (i = 0; i < node.childNodes.length; i++) {
arr.push(node.childNodes[i])
getDescendants(node.childNodes[i], arr);
}
return arr;
}

使用此函数,您只需简单地遍历所有后代并检查它们是否为文本节点 (nodeType == 3),然后在中搜索词 Sold他们。之后提取数字非常容易。像这样的东西:

var searchValue = "Sold";
var descendants = getDescendants(listItem);
for(var j = 0; j < descendants.length; j++) {
if(descendants[j].nodeType == 3){
if(descendants[j].nodeValue.indexOf(searchValue) > -1){
var text = descendants[j].nodeValue.trim();
//"37+ Sold" for example
var soldNr = text.substring(0, text.indexOf(searchValue)-2);
//you process your number(soldNr) further
}
}
}

关于javascript - 如何在所有后代文本节点(Javascript)中搜索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52029676/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com