javascript 中的第 n 个子选择器
nth-child selector in javascript
我正在使用以下 svg
const selector = document.querySelector('.yAxis g:nth-child(3)');
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
<rect class="vBoxRect" width="1280" height="720" fill="none" stroke="red"></rect>
<rect class="boundRect" x="50" y="50" width="1180" height="620" fill="none" stroke="green"></rect>
<g class="bound" style="transform: translate(50px, 50px);">
<g fill="none" font-size="10" font-family="sans-serif" text-anchor="end" class="yAxis">
<path class="domain" stroke="currentColor" d="M0.5,620.5V0.5"></path>
<g class="tick" opacity="1" transform="translate(0,620.5)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">0</text>
</g>
<g class="tick" opacity="1" transform="translate(0,549.531741126106)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">10,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,478.56348225221205)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">20,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,407.59522337831805)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">30,000</text>
</g>
</g>
</g>
</svg>
</body>
</html>
我想编写一个查询来选择 2nd <g> element of class="yAxis"
以下是
<g class="tick" opacity="1" transform="translate(0,549.531741126106)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">10,000</text>
</g>
const selector = document.querySelector('.yAxis g:nth-child(3)');
选择了正确的元素,但为什么我在选择 2nd
g[= 时将 3
作为 nth-child(3)
值传递class=yAxis
的 34=] 元素
您应该使用 :nth-of-type
instead of :nth-child
,因为 :nth-child
选择器还将计算第一个 path
元素:
const selector = document.querySelector('.yAxis g:nth-of-type(2)');
console.log(selector.outerHTML);
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
<rect class="vBoxRect" width="1280" height="720" fill="none" stroke="red"></rect>
<rect class="boundRect" x="50" y="50" width="1180" height="620" fill="none" stroke="green"></rect>
<g class="bound" style="transform: translate(50px, 50px);">
<g fill="none" font-size="10" font-family="sans-serif" text-anchor="end" class="yAxis">
<path class="domain" stroke="currentColor" d="M0.5,620.5V0.5"></path>
<g class="tick" opacity="1" transform="translate(0,620.5)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">0</text>
</g>
<g class="tick" opacity="1" transform="translate(0,549.531741126106)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">10,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,478.56348225221205)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">20,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,407.59522337831805)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">30,000</text>
</g>
</g>
</g>
</svg>
第一个 path
child .
和 .yAxis g:nth-child(3)
你 select 2th g
你可以使用 .yAxis g:nth-of-type(2)
我正在使用以下 svg
const selector = document.querySelector('.yAxis g:nth-child(3)');
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
<rect class="vBoxRect" width="1280" height="720" fill="none" stroke="red"></rect>
<rect class="boundRect" x="50" y="50" width="1180" height="620" fill="none" stroke="green"></rect>
<g class="bound" style="transform: translate(50px, 50px);">
<g fill="none" font-size="10" font-family="sans-serif" text-anchor="end" class="yAxis">
<path class="domain" stroke="currentColor" d="M0.5,620.5V0.5"></path>
<g class="tick" opacity="1" transform="translate(0,620.5)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">0</text>
</g>
<g class="tick" opacity="1" transform="translate(0,549.531741126106)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">10,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,478.56348225221205)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">20,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,407.59522337831805)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">30,000</text>
</g>
</g>
</g>
</svg>
</body>
</html>
我想编写一个查询来选择 2nd <g> element of class="yAxis"
以下是
<g class="tick" opacity="1" transform="translate(0,549.531741126106)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">10,000</text>
</g>
const selector = document.querySelector('.yAxis g:nth-child(3)');
选择了正确的元素,但为什么我在选择 2nd
g[= 时将 3
作为 nth-child(3)
值传递class=yAxis
您应该使用 :nth-of-type
instead of :nth-child
,因为 :nth-child
选择器还将计算第一个 path
元素:
const selector = document.querySelector('.yAxis g:nth-of-type(2)');
console.log(selector.outerHTML);
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720">
<rect class="vBoxRect" width="1280" height="720" fill="none" stroke="red"></rect>
<rect class="boundRect" x="50" y="50" width="1180" height="620" fill="none" stroke="green"></rect>
<g class="bound" style="transform: translate(50px, 50px);">
<g fill="none" font-size="10" font-family="sans-serif" text-anchor="end" class="yAxis">
<path class="domain" stroke="currentColor" d="M0.5,620.5V0.5"></path>
<g class="tick" opacity="1" transform="translate(0,620.5)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">0</text>
</g>
<g class="tick" opacity="1" transform="translate(0,549.531741126106)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">10,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,478.56348225221205)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">20,000</text>
</g>
<g class="tick" opacity="1" transform="translate(0,407.59522337831805)">
<line stroke="currentColor" x2="-6"></line>
<text fill="currentColor" x="-9" dy="0.32em">30,000</text>
</g>
</g>
</g>
</svg>
第一个 path
child .
和 .yAxis g:nth-child(3)
你 select 2th g
你可以使用 .yAxis g:nth-of-type(2)