同様の質問がたくさんありますが、これに対する答えを見つけることができませんでした。
次のような HTML ページがあるとします。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Page title</title>
</head>
<body>
<div id="content">
<table>
<tr>
<td>A</td>
<td>B</td>
<td>C</td>
</tr>
<tr>
<td>D</td>
<td>E</td>
<td>F</td>
</tr>
</table>
</div>
</body>
</html>
親の最初の子であるページ上の 2 番目の要素を選択します<td>
。この場合、それは要素<td>D</td>
です。
この文言はそのままにしておく必要があることに注意してください。たとえば、2 番目の子を選択して<tr>
から最初の子を選択するのと同じではありません (結果は同じ要素になります)。このアプローチはそこでは機能しません。
私がこれまでに行ったこと:
CSS セレクター が私と#content td:first-child
を見つけ、JS ( ) または Java (最終的にこれらの要素を操作している場所)を介して 2 番目の要素を選択できるようになりました。ただし、セレクターを介して実行できることに対して追加のコードを使用することは、まったく一貫性がありません。A
D
document.querySelectorAll("query")[1]
同様に、XPath 式:を使用できますid('content')//td[1]
。上記の CSS セレクターと同等です。ノードセットを返すので、思い通りにid('content')//td[1][2]
動作すると思いましたが、うまくいきませんでした。
しばらくすると、( id('content')//td[1] )[2]
自分のやりたいように仕事をしていることに気付きました。
それでも、自分の要素を取得するための単一のクエリを実行できなかったことがわかったのはがっかりしたため、アカデミックな質問が用意されています。CSS セレクターまたは XPath 式のいずれかを使用して、他に解決策はありますか?私の質問?私は何を取りこぼしたか?それはできますか?