Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 第n个元素类型的css选择器第n个元素类型()的奇怪实现_Javascript_Html_Dom_Css Selectors - Fatal编程技术网

Javascript 第n个元素类型的css选择器第n个元素类型()的奇怪实现

Javascript 第n个元素类型的css选择器第n个元素类型()的奇怪实现,javascript,html,dom,css-selectors,Javascript,Html,Dom,Css Selectors,我可能很愚蠢,但我正试图选择第二个有特殊课程的部门。什么是正确的查询选择器 对于测试purpost,我想使用document.querySelectorcontent-wrapper>.specialclass:nth-of-type2;我以为这是第n种类型。但它返回未定义的.nth-of-type以及从父元素开始计数的第n个子元素。问题是元素的顺序经常变化 网站结构 <div id="content-wrapper"> <div class="a"></di

我可能很愚蠢,但我正试图选择第二个有特殊课程的部门。什么是正确的查询选择器

对于测试purpost,我想使用document.querySelectorcontent-wrapper>.specialclass:nth-of-type2;我以为这是第n种类型。但它返回未定义的.nth-of-type以及从父元素开始计数的第n个子元素。问题是元素的顺序经常变化

网站结构

 <div id="content-wrapper">
  <div class="a"></div>
  <div class="a"></div>
  <div class="specialclass">Can be selectet through document.querySelector(".specialclass:nth-of-type(3)");</div>
  <div class="a"></div>
  <div class="a"></div>
  <div class="a"></div>
  <div class="specialclass">element I'd like to select. Can be selectet through document.querySelector(".specialclass:nth-of-type(7)");</div>
  <div class="a"></div>
  <div class="a"></div>
  <div class="a"></div>
</div>
重要提示:请注意,我无法更改网站标记

type:nth中的type是指元素类型,在本例中是div。由于子元素都是div元素,因此type:nth的功能与:nth子元素相同。这完全是出于设计

虽然的一般问题通常与对类型n如何工作的误解有关,但这个问题并不是所有其他问题的重复,因为它们都是基于CSS的,这带来了选择器API中不存在的某些限制,例如DOM提供的限制

在您的特定情况下,您可以使用querySelector从结果节点列表中选择所有.specialclass元素和索引,而不是尝试使用querySelector检索单个元素,以获得所需的元素。请记住,这是一个基于零的索引,与基于一的结构伪类不同:

var secondElement = document.querySelectorAll("#content-wrapper > .specialclass")[1];
你也可以用类似的东西

var secondElement = document.querySelector("#content-wrapper > .specialclass ~ .specialclass");
如注释和querySelector中所述,注意:not querySelector将只拾取第一个这样的元素-这始终是最接近的.specialclass,它是第一个.specialclass的后续同级,而不管这些元素有多少。但是,我更喜欢从节点列表中索引,因为目的更为明确。

type in:nth of type指的是元素类型,在本例中是div。由于子元素都是div元素,因此,:nth of type的功能与:nth child相同。这完全是出于设计

虽然的一般问题通常与对类型n如何工作的误解有关,但这个问题并不是所有其他问题的重复,因为它们都是基于CSS的,这带来了选择器API中不存在的某些限制,例如DOM提供的限制

在您的特定情况下,您可以使用querySelector从结果节点列表中选择所有.specialclass元素和索引,而不是尝试使用querySelector检索单个元素,以获得所需的元素。请记住,这是一个基于零的索引,与基于一的结构伪类不同:

var secondElement = document.querySelectorAll("#content-wrapper > .specialclass")[1];
你也可以用类似的东西

var secondElement = document.querySelector("#content-wrapper > .specialclass ~ .specialclass");

如注释和querySelector中所述,注意:not querySelector将只拾取第一个这样的元素-这始终是最接近的.specialclass,它是第一个.specialclass的后续同级,而不管这些元素有多少。不过,我更喜欢从节点列表中建立索引,因为目的更为明确。

尝试内容包装器>.specialclass~。specialclass?看起来像是的另一个副本:。然而,考虑到标记,上面的解决方案是可行的。也可能是:虽然关系非常密切,但我不认为结束这个javascript问题是css问题的重复@例如,BoltClock的答案在这两个css问题中都无效,但肯定在这里。请尝试内容包装器>.specialclass~。specialclass?看起来像另一个副本:。然而,考虑到标记,上面的解决方案是可行的。也可能是:虽然关系非常密切,但我不认为结束这个javascript问题是css问题的重复@例如,BoltClock的回答在css问题中都是无效的,但肯定在这里。