gpt4 book ai didi

javascript - 有什么方法可以获取文本内容的Element?

转载 作者:行者123 更新时间:2023-12-03 11:26:05 30 4
gpt4 key购买 nike

我遇到了一段时间困扰的问题,很抱歉向该论坛发送了一些垃圾邮件。

有什么办法可以通过文本内容获取元素吗?这是一个例子:

<span id="result_5_name" class="market_listing_item_name" style="color: #FFD700;">Item | Anodized Navy</span>

我正在尝试通过文本内容“元素|阳极氧化海军。
是否可以做类似的事情:
function getelem {
var item = document.getElementsByTextContent('Item | Anodized Navy');

item[0].click();
}

我知道这是不存在的,但这只是为了您了解这个想法。另外,我不能按ID或类名使用,也不能更改元素的HTML代码,因此必须使用文本内容来完成,我看不到其他方法。

我非常感谢您的任何反馈意见,

谢谢!

最佳答案

好吧,由于您使用标记了问题,因此可以使用 :contains 选择器:

var item = $(':contains(Item | Anodized Navy)');

但是请注意,这将返回包含该文本的每个元素,包括 span和跨度的所有父元素。如果您只想获取最里面的元素(假设只有一个),请获取最后一个元素,如下所示:
var item = $(':contains(Item | Anodized Navy)').last();

要在不使用jQuery的情况下进行等效操作,您必须实现以下功能:
function getElementsByText(text) {
var spans = document.getElementsByTagName('span'),
results = [];
for(var i = 0; i < spans.length; i++) {
var content = spans[i].textContent || spans[i].innerText || '';
if (content.indexOf(text) != -1)
results.push(spans[i]);
}
return results;
}

或可能像这样,具体取决于您的需求:
function getElementsByText(text) {
function rec(ele, arr)
{
if (ele.childNodes.length > 0)
for (var i = 0; i < ele.childNodes.length; i++)
rec(ele.childNodes[i], arr);
else if (ele.nodeType == Node.TEXT_NODE &&
ele.nodeValue.indexOf(text) != -1)
arr.push(ele.parentNode);
return arr;
}
return rec(document.body, []);
}

然后像下面这样调用此函数:
var item = getElementsByText('Item | Anodized Navy');

还要注意,在您的代码中, getelem需要在函数名称后加上 (),如下所示:
function getelem() {
var item = getElementsByText('Item | Anodized Navy');
...
}

关于javascript - 有什么方法可以获取文本内容的Element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21790905/

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