dataset
是 HTML5 中引入的一个属性,它提供了对 HTML 元素上自定义数据属性(data-* attributes)的访问。这些自定义数据属性允许你在 HTML 元素上存储额外的信息,这些信息不会影响页面的布局或样式,但可以被 JavaScript 读取和修改。
data-*
属性在元素上存储自定义数据。例如,<div data-user-id="123"></div>
。dataset
属性,它是一个 DOMStringMap
对象,包含了该元素上所有 data-*
属性的键值对。dataset
返回的是一个 DOMStringMap
对象,它类似于一个 JavaScript 对象,但是有一些特殊的行为:
data-
前缀,并且连字符后的第一个字符会被转换为驼峰格式。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Dataset Example</title>
</head>
<body>
<div id="myDiv" data-user-id="123" data-user-name="John"></div>
<script>
// 获取元素
var myDiv = document.getElementById('myDiv');
// 访问 dataset 属性
console.log(myDiv.dataset.userId); // 输出: 123
console.log(myDiv.dataset.userName); // 输出: John
// 修改 dataset 属性
myDiv.dataset.userName = 'Jane';
console.log(myDiv.dataset.userName); // 输出: Jane
// 添加新的 dataset 属性
myDiv.dataset.userAge = '30';
console.log(myDiv.dataset.userAge); // 输出: 30
// 删除 dataset 属性
delete myDiv.dataset.userAge;
console.log(myDiv.dataset.userAge); // 输出: undefined
</script>
</body>
</html>
dataset
属性名不包含 data-
前缀,并且连字符后的第一个字符会被转换为驼峰格式,所以要注意属性名的转换。例如,data-user-id
对应 dataset.userId
。dataset
中的所有值都是字符串类型,如果需要其他数据类型,需要进行转换。dataset
属性在现代浏览器中都有很好的支持,但在一些旧版本的浏览器中可能不支持。可以通过检测 dataset
属性是否存在来实现兼容性处理。if ('dataset' in document.createElement('div')) {
// 浏览器支持 dataset 属性
} else {
// 浏览器不支持 dataset 属性,使用其他方法存储数据
}
通过以上信息,你应该能够理解 dataset
的基本用法,并能够在实际开发中应用它。
领取专属 10元无门槛券
手把手带您无忧上云