【问题标题】:Is there a way to get elements by specific values [duplicate]有没有办法通过特定值获取元素[重复]
【发布时间】:2019-09-28 18:23:21
【问题描述】:

我正在尝试编写一个切换器,该切换器将显示/隐藏具有特定标签的任何给定页面上的所有内容。我面临的问题是我无法弄清楚如何识别元素。

网页是使用名为 MadCap Flare 的程序创建的。在 Flare 中,您可以将条件文本标签添加到有助于确定构建和未构建的元素(以及其他内容)。在最终的 HTML 输出中,这些条件文本标记仍然存在。因此,带有条件文本标记的段落 MyTag 将显示为:

<p data-mc-conditions="MyTag">Here is my paragraph text.</p>

鉴于这些条件文本标签是 Flare 原生的,我正在尝试找到一种方法来识别具有特定条件文本标签的所有元素。

我查看了 GetElementByID、GetElementsByTagName、GetElementsByClassName,并希望有类似于查询和查找具有给定条件文本标记的所有元素的东西。

【问题讨论】:

    标签: javascript jquery html getelementsbyclassname madcap


    【解决方案1】:

    您可以为此使用 CSS 选择器和 的组合:
    document.querySelector("p[data-mc-conditions='MyTag']");

    document.querySelector("p[data-mc-conditions='MyTag']").style.border = "5px solid yellow";
    &lt;p data-mc-conditions="MyTag"&gt;Here is my paragraph text.&lt;/p&gt;

    querySelectorw3schools.com 描述:

    querySelector() 方法返回与document 中指定的 CSS 选择器匹配的第一个元素。

    但是,您可能有多个元素,因此您想使用
    querySelectorAll()
    但您必须逐个循环遍历元素:

    var elements = document.querySelectorAll("p[data-mc-conditions='MyTag']");
    
    for (var i = 0; i < elements.length; i++) {
      elements[i].style.border = "5px solid yellow";
    }
    <p data-mc-conditions="MyTag">Here is my paragraph text.</p>
    <p data-mc-conditions="MyTag">Here is my paragraph text.</p>
    <p data-mc-conditions="MyTag">Here is my paragraph text.</p>
    <p data-mc-conditions="MyTag">Here is my paragraph text.</p>

    【讨论】:

    • CSS 选择器?那些只是querySelector 中的元素和属性选择器吗?
    • 这也适用于 jquery
    • @NewToJS 是的。您可以使用 CSS 选择器选择元素。
    • @BWonder CSS = 层叠样式表 您的查询选择器与样式无关。 data-mc-conditions='MyTag' 是一个属性/属性,称为 data-set 而不是 CSS
    • @NewToJS 我想你弄错了。我的意思是我们使用 CSS 选择器来确定要选择的元素。这实际上是querySelector 的定义,如上所述。所以你是对的:它与风格无关,但我从来没有这么说过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2021-12-10
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多