data-*
试试看
所有这些自定义数据都可以通过设置属性的元素的 HTMLElement
接口获得。 HTMLElement.dataset
属性可以访问它们。*
可以替换为任何遵循 XML 名称的生产规则 的名称,包括以下建议
- 名称不应以
xml
(不区分大小写)开头,因为它保留供未来 XML 规范使用。 - 名称不应包含任何冒号字符 (
:
),因为 XML 会将此类名称赋予特定含义。 - 名称不应包含任何大写字母,因为 XML 全部使用小写字母。
这些只是建议。如果不遵循这些命名建议,不会出现任何错误。属性仍然可以使用 CSS 的 属性选择器 进行匹配,属性不区分大小写,但属性值区分大小写。不符合这三个建议的属性也会被 JavaScript HTMLElement.dataset
属性识别,并且用户代理会将该属性包含在包含 HTMLElement
所有自定义数据属性的 DOMStringMap
中。
如果您计划使用 HTMLElement.dataset
,则属性名称中 data-
之后的部分只能包含 JavaScript 属性名称中允许的字符(以及连字符,连字符将被删除)。dataset
版本的属性名称会删除 "data-" 前缀,并将名称的剩余部分从 kebab-case 转换为 camelCase。例如,element.getAttribute("data-test")
等效于 element.dataset.test
,而 data-test-abc
将可以通过 HTMLElement.dataset.testAbc
(或 HTMLElement.dataset["testAbc"]
)访问。请避免使用连字符后面的非字母字符,例如 data-test-1
或 data--test
,因为它们不会被 HTMLElement.dataset
识别。
用法
通过添加 data-*
属性,即使是普通的 HTML 元素也可以变得相当复杂和强大,成为程序对象。例如,游戏中的一艘宇宙飞船 "精灵" 可以是一个简单的 <img>
元素,带有 class
属性和几个 data-*
属性
<img
class="spaceship cruiserX3"
src="shipX3.png"
data-ship-id="324"
data-weapons="laserI laserII"
data-shields="72%"
data-x="414354"
data-y="85160"
data-z="31940"
onclick="spaceships[this.dataset.shipId].blasted()" />
有关使用 HTML 数据属性的更深入教程,请参阅 使用数据属性。
规范
规范 |
---|
HTML 标准 # attr-data-* |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 所有 全局属性。
- 允许访问和修改这些值的
HTMLElement.dataset
属性。 - 使用数据属性