HTML5 data-*自定义数据属性的示例代码

2025-12-13 0 103

引言

HTML5 引入的自定义数据属性data-*)为开发者提供了一种将自定义数据嵌入HTML元素的标准方法。

这个特性使得在不使用非标准属性或额外的 DOM 属性的情况下,能够在 HTML 元素上存储额外信息。

基本概念

自定义数据属性以data-为前缀,后面跟着自定义的属性名。例如:

1

<divid=\”user\”data-id=\”1234\”data-user=\”johndoe\”data-date-of-birth=\”1980-01-01\”>John Doe</div>

这里,我们定义了三个自定义数据属性:data-id、data-user和data-date-of-birth。

使用自定义数据属性

1. 在 HTML 中定义

自定义数据属性可以在任何 HTML 元素上定义:

1

2

3

4

5

6

7

<article

id=\”electriccars\”

data-columns=\”3\”

data-index-number=\”12314\”

data-parent=\”cars\”>

</article>

2. 通过 JavaScript 访问

可以使用dataset属性来访问元素的自定义数据:

1

2

3

4

const article = document.querySelector(\’#electriccars\’);

console.log(article.dataset.columns); // \”3\”

console.log(article.dataset.indexNumber); // \”12314\”

console.log(article.dataset.parent); // \”cars\”

注意:在 JavaScript 中,属性名会自动从 kebab-case 转换为 camelCase。

3. 通过 JavaScript 修改

同样可以使用dataset来修改自定义数据属性:

1

article.dataset.columns = 5;

4. 在 CSS 中使用

可以在 CSS 中使用属性选择器来基于自定义数据属性应用样式:

1

2

3

4

5

6

article[data-columns=\’3\’] {

width: 400px;

}

article[data-columns=\’4\’] {

width: 600px;

}

高级用法

1. 存储 JSON 数据

可以在自定义数据属性中存储 JSON 数据:

1

<divid=\”user-data\”data-user=\'{\”name\”:\”John\”, \”age\”:30, \”city\”:\”New York\”}\’></div>

在 JavaScript 中解析:

1

2

3

const userData = document.getElementById(\’user-data\’);

const user = JSON.parse(userData.dataset.user);

console.log(user.name); // \”John\”

2. 事件委托

自定义数据属性在事件委托中特别有用:

1

2

3

4

5

<ulid=\”user-list\”>

<lidata-user-id=\”1\”data-user-name=\”Alice\”>Alice</li>

<lidata-user-id=\”2\”data-user-name=\”Bob\”>Bob</li>

<lidata-user-id=\”3\”data-user-name=\”Charlie\”>Charlie</li>

</ul>

1

2

3

4

5

6

document.getElementById(\’user-list\’).addEventListener(\’click\’, function(e) {

if (e.target.tagName === \’LI\’) {

console.log(\’Clicked on user:\’, e.target.dataset.userName);

console.log(\’User ID:\’, e.target.dataset.userId);

}

});

3. 动态内容加载

自定义数据属性可用于存储动态内容加载所需的信息:

1

<buttondata-load-url=\”/api/users\”data-target=\”#user-container\”>Load Users</button>

1

2

3

4

5

document.querySelector(\’button\’).addEventListener(\’click\’, function() {

const url = this.dataset.loadUrl;

const target = this.dataset.target;

// 使用 url 加载数据并更新 target 元素

});

最佳实践

  • 命名规范:使用有意义的、描述性的名称。遵循 kebab-case 命名约定(例如data-user-id而不是data-userId)。
  • 避免存储敏感信息:自定义数据属性是公开可见的,不要用于存储敏感数据。
  • 保持数据简单:虽然可以存储复杂的数据结构,但最好保持简单,便于维护。
  • 不要过度使用:自定义数据属性应该用于存储与元素紧密相关的数据,而不是作为通用存储机制。
  • 考虑性能:大量使用自定义数据属性可能会增加 HTML 的大小,影响页面加载速度。
  • 保持一致性:在整个项目中保持自定义数据属性使用的一致性。

实际应用示例:交互式图表

以下是一个使用自定义数据属性创建简单交互式图表的例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<!DOCTYPE html>

<htmllang=\”zh-CN\”>

<head>

<metacharset=\”UTF-8\”>

<title>交互式图表</title>

<style>

.bar {

fill: steelblue;

cursor: pointer;

}

.bar:hover {

fill: brown;

}

</style>

</head>

<body>

<svgwidth=\”500\”height=\”300\”>

<gid=\”chart\”>

<rectclass=\”bar\”x=\”0\”y=\”0\”width=\”50\”height=\”200\”data-value=\”200\”data-category=\”A\”></rect>

<rectclass=\”bar\”x=\”60\”y=\”50\”width=\”50\”height=\”150\”data-value=\”150\”data-category=\”B\”></rect>

<rectclass=\”bar\”x=\”120\”y=\”100\”width=\”50\”height=\”100\”data-value=\”100\”data-category=\”C\”></rect>

<rectclass=\”bar\”x=\”180\”y=\”70\”width=\”50\”height=\”130\”data-value=\”130\”data-category=\”D\”></rect>

<rectclass=\”bar\”x=\”240\”y=\”120\”width=\”50\”height=\”80\”data-value=\”80\”data-category=\”E\”></rect>

</g>

</svg>

<divid=\”info\”></div>

<script>

document.getElementById(\’chart\’).addEventListener(\’click\’, function(e) {

if (e.target.classList.contains(\’bar\’)) {

const value = e.target.dataset.value;

const category = e.target.dataset.category;

document.getElementById(\’info\’).textContent = `类别 ${category}: ${value}`;

}

});

</script>

</body>

</html>

在这个例子中:

  • 我们使用data-value和data-category属性存储每个条形的数据。
  • 通过事件委托,我们可以轻松地处理所有条形的点击事件。
  • 当点击一个条形时,我们使用存储在自定义数据属性中的信息来更新显示。

浏览器兼容性

自定义数据属性在所有现代浏览器中都得到了很好的支持。然而,在使用dataset属性时,需要注意 IE 10 及以下版本不支持此属性。对于需要支持旧版浏览器的项目,可以使用getAttribute方法作为替代:

1

2

3

4

// 现代浏览器

const value = element.dataset.myValue;

// 兼容旧浏览器

const value = element.getAttribute(\’data-my-value\’);

到此这篇关于HTML5 data-*自定义数据属性的文章就介绍到这了,更多相关html5 自定义数据属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 HTML5 data-*自定义数据属性的示例代码 https://www.zuozi.net/36708.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务