【问题标题】:How to connect combinators selectors如何连接组合器选择器
【发布时间】:2021-01-24 11:48:24
【问题描述】:

假设我有这个 html:

    <a></a>
    <b> </b>
    <c> </c>
    <c>incorrect</c>
    <a></a>
    <c>incorrect</c>
    <b> </b>
    <d> </d>
    <b> </b>
    <a></a>
    <c>incorrect</c>
    <a></a>
    <c>correct</c>
    <a></a>
    <c>incorrect</c>
    <d> </d>

我如何选择介于&lt;a&gt;&lt;d&gt; 之间的&lt;c&gt;correct&lt;/c&gt; 我想到了这样的事情:

document.querySelector('a~c.d~c');

但它不起作用。您有什么想法可以实现吗?

【问题讨论】:

  • 这里可能有错别字 -->documnet
  • @Gad 我不明白
  • 您将“document”拼写错误,导致出现错误。

标签: javascript html css css-selectors


【解决方案1】:

要选择&lt;c&gt;correct&lt;/c&gt;,可以使用:

document.querySelector('b+c');

这会选择所有c 直接跟在b 之后。

如果要选择位于两个元素之间的所有元素,则不能使用 CSS。

虽然可以用一点 javascript:

// selects all 'c' following an 'a'
for (const element of document.querySelectoAll("a+b")) {
  // checks if the next element after 'c' is 'b'
  if (element.nextSibling().tagName == "b") {
    // prints every 'c' that follows an 'a' and has a 'b' after
    console.log(element);
  }
}

【讨论】:

  • 这适用于这种情况,但我的情况要复杂得多,我必须选择位于另外两个元素之间的元素
  • 然后显示足够多的真实 html,我们可以理解并重现您的问题。纠正拼写错误,看看是否有帮助。您的控制台中是否有任何报告的错误?给他们看。
【解决方案2】:

console.log(document.querySelector('a~c+b~c').innerText)
<a></a>
<c>incorrect</c>
<b></b>
<c>correct</c>
<b></b>
<a></a>

console.log(document.querySelector('d~c+a~c').innerText)
<a></a>
<b> </b>
<c> </c>
<c>incorrect</c>
<a></a>
<c>incorrect</c>
<b> </b>
<d> </d>
<b> </b>
<a></a>
<c>incorrect</c>
<a></a>
<c>correct</c>
<a></a>
<c>incorrect</c>
<d> </d>

【讨论】:

  • 这正是我想要的。谢谢老哥
猜你喜欢
  • 2012-12-31
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多