[解決済み] var a = document.querySelector('a[data-a=1]');" というJSコードはなぜエラーになるのでしょうか?
質問
DOMに要素があります。
<a href="#" data-a="1">Link</a>
この要素をHTML5のカスタムデータ属性で取得したい。
data-a
. ということで、JSのコードを書いています。
var a = document.querySelector('a[data-a=1]');
しかし、このコードは動作せず、ブラウザのコンソールにエラーが表示されます。(ChromeとFirefoxでテストしました。)
JSコード
var a = document.querySelector('a[data-a=a]');
はエラーが発生しません。ということで、問題はHTML5のJS APIである
document.querySelector
がHTML5のカスタムデータ属性で数値の値を探すことをサポートしていないことが問題だと思います。
これはブラウザの実装の問題なのか、それともHTML5の仕様の問題で
document.querySelector
?
次に、以下のコードを http://validator.w3.org/ :
<!DOCTYPE html>
<meta charset="utf-8">
<title>An HTML Document</title>
<a href="#" data-a="1">Link</a>
バリデートされている これらのHTML5コードはバリデートされているので HTML5のJS APIを使うことができるはずです。
document.querySelector
を使って、このアンカー要素をカスタムデータ属性で探せるはずです。しかし、実際にはエラーが発生します。
HTML5 の JS API への仕様では
document.querySelector
は、このメソッドが数値値を持つ HTML5 データ カスタム属性を探すことができないと述べていますか?(HTML5仕様のソースが欲しいところです)。
どのように解決するのですか?
から セレクタの指定 :
属性の値はCSS識別子または文字列でなければなりません。
識別子は数字で始めることはできません。文字列は引用符で囲む必要があります。
1
は有効な識別子でも文字列でもありません。
使用する
"1"
(これは文字列です)を代わりに使用します。
var a = document.querySelector('a[data-a="1"]');
関連
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] parseInt(1/0, 19)はなぜ18を返すのですか?
-
[解決済み] ASP.NET MVCでHTML-5のdata-*属性でダッシュを使用する方法
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み】enctype='multipart/form-data'とはどういう意味ですか?
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)