2017-08-09 6 views
1

id "#b> a"が検索されるとquerySelectorはnullを返しますが、getElementByIdは正しい要素を返します。どうしたの?quertySelectorはnull値を何と返しますか?

var x = document.querySelector('#b>a'); 
 
console.log(x); 
 
var y = document.getElementById("b>a"); 
 
console.log(y);
Name <input type="text" id="b>a">

+0

を使用してセレクタをエスケープする必要があります仕事を得るために、なぜあなたは非常に面倒で実行することが予測されているので、IDのように名前が必要なのでしょうか? – reporter

答えて

5

>文字は、CSSセレクタの構文では意味があります。 "#b\>a"を使用する必要があります。

>は「直接の子」コンビネータです。したがって、"#b>a"は、idが「b」の要素の子である<a>要素を選択します。

+1

...あなたのユースケースにセレクタが必要な場合を除いて、document.getElementById()を使用すればよいでしょう。 – BoltClock

+0

これはコンビネータと呼ばれています;) – BoltClock

+0

@BoltClockは合意しましたが、セレクタを使用するのは奇妙でも悪いもありません。特に、ある種のツール/フレームワークの状況ではそうです。 *編集*はい私はその言葉を覚えようとしていた。私の防衛の私は電話中に入力していた;) – Pointy

2

>文字をエスケープする必要があります。セレクタによる問合せは、文字の前のタイプを探します

1

var x = document.querySelector('#b\\>a'); 
 
console.log(x); 
 
var y = document.getElementById("b>a"); 
 
console.log(y);
Name <input type="text" id="b>a">

下回ることがなく、テキストを探しますので、スニペットを参照してください。

これはあなたが

var x = document.querySelector('#b\\>a'); 
関連する問題