2

エラー コンソールで次の 2 つのコード ブロックを実行してみてください。

最初の1つ。NodeList を出力します。

var selector = "*[data-type=day][data-day='23']";
var a = document.querySelectorAll( selector );
alert( a );

二つ目。エラーを生成します。

var selector = "*[data-type=day][data-day=23]";
var a = document.querySelectorAll( selector );
alert( a );

data-type=day構文がOKでそうでないのはなぜdata-day=23ですか? 属性値は常に次のようにラップする必要がありますdata-type='day'か?

2番目のケースで発生する例外は次のとおりです。

[例外...「無効または不正な文字列が指定されました」コード:「12」nsresult:「0x8053000c (SyntaxError)」]

4

1 に答える 1

10

ブラウザは、次の仕様に従っているだけです。

属性値は、CSS 識別子または文字列でなければなりません。

および識別子について:

CSS では、識別子 (セレクターの要素名、クラス、および ID を含む) には、文字 [a-zA-Z0-9] と ISO 10646 文字 U+00A0 以降、およびハイフン (-) とアンダースコア ( _); 数字で始めることはできません… </p>

したがって23(数字で始まる) は文字列として表現する必要があります:

文字列は、二重引用符または単一引用符で記述できます

于 2012-10-23T06:47:32.950 に答える