代码之家  ›  专栏  ›  技术社区  ›  AnOldSoul

如何使用元素的文本内容选择元素?

  •  0
  • AnOldSoul  · 技术社区  · 7 年前

    我有一个下拉列表 <li> <span>

    document.querySelector('.c-partnerSelector__menu__list > li > p > span')
    

    下面是获取第一个元素的控制台输出。但是我需要选择值为“SecondElement”的元素。我不能在这里使用索引,因为这个地方的元素可能会改变。

    enter image description here

    任何帮助都将不胜感激。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Andersson    7 年前

    您可以使用下面的XPath来获取 span

    //*[contains(@class, "c-partnerSelector__menu__list")]/li/p/span[.="SecondElement"]
    

    这与CSS选择器的含义相同 .c-partnerSelector__menu__list > li > p > span

        2
  •  3
  •   T.J. Crowder    7 年前

    注: 这回答了最初发布的问题, which was :

    如何使用元素的文本内容选择元素document.querySelector?

    从评论中,我们可以清楚地看到,这并不是hte OP的真正问题,不过,这一点得到了很多人的回答 Andersson's post . 不过,我会把这个留给那些 querySelector


    querySelectorAll ,然后使用 Array#find 在上面找到你想要的文字:

    var list = document.querySelectorAll('.c-partnerSelector__menu__list > li > p > span');
    var element = Array.prototype.find.call(list, function(el) {
        return el.innerText.includes("SecondElement");
    });
    

    NodeList 查询选择器all iterable公司:

    const element = [...document.querySelectorAll('.c-partnerSelector__menu__list > li > p > span')]
                        .find(el => el.innerText.includes("SecondElement"));
    

    Andersson 似乎有一个很好的观点(例如 here )关于使用XPath,如果您可以选择的话。