【发布时间】:2013-01-26 09:36:41
【问题描述】:
我在 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 自定义数据属性中查找数值。
这是浏览器实现错误的问题还是与document.querySelector相关的HTML5规范问题?
然后我在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 对 HTML5 JS API document.querySelector 的规范是否说此方法无法查找具有数字值的 HTML5 数据自定义属性? (需要 HTML5 规范源。)
【问题讨论】:
-
当使用CSS attribute selectors时,值应该用引号括起来,例如
a[data-a="1"]. -
querySelectorAll()不是“HTML5 JS API”。它与 HTML5 完全无关。
标签: javascript html css-selectors custom-data-attribute selectors-api