2017-11-09 8 views
0

iがdocument.getElementsByAttribute機能を実装しようとしましたが、私はこの付属取得しています:なぜ私はquerySelectorAll()エラー

function getElementsByAttribute(att, val){ 

    return document.querySelectorAll(`[${att} = ${val}]`) 

} 

が、私は直接return文を入力しようとすると、私はエラーを取得する理由コンソールの場合:

document.querySelectorAll("["id" = "btn"]") 

getElementsByAttribute2('id', 'btn')と同じではありませんか?

+0

["\" id \ "b \ n \" btn \ "] 。 –

答えて

0

が、私は、コンソール上で直接return文 を入力しようとすると、私はエラーを取得する理由:

document.querySelectorAll("["id" = "btn"]")

何をコンソールに入力していることと同じではありませんのであなたの機能には何がありますか?

document.querySelectorAll(`[${att} = ${val}]`) 

そして、テンプレートリテラルは、それらを引用または文字列の残りの部分とそれらを連結する気にすることなく、通常の文字列リテラルに直接挿入することができます:あなたの関数は、template literalsを使用しています。

コンソールに直接入力すると、テンプレートリテラルは使用されませんでした。リテラルを使用しただけで、その場合は引用符と連結が重要になります。引用符は最初のペアがあるので、ペアで来る:"["とそれはすぐにidが続いているし、このように二つの部分を連結していなかったので:

"[" + id 

それはエラースロー - unexpected identifierのような、おそらく何かを。値の周り

[attributeName comparisonOperator value] 

の引用は、値にスペースが含まれる場合にのみ必要です。

CSSの属性セレクタは次の形式を取る必要があります。したがって、次のように書くことができます:

document.querySelectorAll("[id=btn]"); 
+0

引用符付きのバージョンも正しいです: '[" id "=" btn "]'(引用符がうまく書かれている場合)。 –

+0

@ibrahimmahrir私はそうではないと言っていませんでした。私はそれが必要なときだけ言った。 –

+0

@ibrahimmahrir引用されたバージョンは動作しないようです。 –

関連する問題