在html5中可为所有元素添加一种自定义的属性,这种属性的前缀以data-开头,比如:data-name,目的是为元素提供与页面渲染无关,但与dom元素强相关的属性。添加完自定义属性后我们可以通过元素的dataset属性来访问其值。

dataset与getAttribute/setAttribute的对比

  在此之前的访问属性的方式我们用getAttribute/setAttribute

  • html 结构:
<div id='div' name='divName'>我是div</div>
  • javascript结构:
var div = document.getElementById('div');
console.log(div.getAttribute('name')); // divName
div.setAttribute('gender','male');
console.log(div.getAttribute('gender')); // male

  现在我们来使用html5中的自定义属性 data-*

  • html 结构:
<p data-name='pName' data-nick-name='dear pName' data-gender='female' myname='数据集访问不到'>我是p</p>
  • javascript结构:
var p = document.querySelector('p');
console.log(p.dataset.name); // pName
console.log(p.dataset.nickName); // dear Name
console.log(p.dataset.gender); // female
console.log(p.dataset); // DOMStringMap {name: "pName", nickName: "dear pName", gender: "female"}
console.log(p.myname); // undefined

总结

  从上面的代码我们可以知道,dataset属性值是DOMStringMap的一个实例,也就是一个键值对的映射,其实自定义属性很早就已经开始使用了,像京东,淘宝这些电商网站,审查他们的页面,可以看到很多。如果需要给元素添加一些不可见的数据以便进行其他处理,那就要用到自定义数据属性。在跟踪链接或者混搭应用中,通过自定义数据属性能方便地知道点击来自页面中的哪个部分。

问答题:`data-`属性的作用是什么?

  `data-`为H5新增的为前端开发者提供自定义的属性,这些属性集可以通过对象的 `dataset` 属性获取,不支持该属性的浏览器可以通过`getAttribute` 方法获取

  需要注意的是:`data-`之后的以连字符分割的多个单词组成的属性,获取的时候使用驼峰风格。 所有主流浏览器都支持 data-* 属性。即:当没有合适的属性和元素时,自定义的 data 属性是能够存储页面或 App 的私有的自定义数据。

参考: HTML5中的数据集dataset和自定义属性data-*

最新文章

  1. 采用Lambda表达式快速实现实体模型对象转换到DTO
  2. BZOJ 1455 罗马游戏 ——左偏树
  3. 虚拟机和windows主机中的文件共享
  4. wdcp安装
  5. 一个js对象的代码结构
  6. 大连网络赛 1006 Football Games
  7. 封装的多功能多效果的RecyclerView
  8. 初次运行 Git 前的配置
  9. .net通用权限框架B/S (四)--DAL数据层以及数据接口
  10. 抽象类 abstract 和 接口 interface 类的区别
  11. hibernate 一对多 多对一 关系表 增删改查大礼包ps二级查也有
  12. java 之 简单工厂模式(大话设计模式)
  13. OO期末总结
  14. murri
  15. Mermaid js与流程图、甘特图..
  16. 搭建svn服务器的坑
  17. tcpdf开发文档(中文翻译版)
  18. 20个有用的linux命令行技巧
  19. Maven 项目打包需要注意到的那点事儿
  20. [Web 前端] CSS篇之2. 清除浮动,什么时候需要清除浮动,清除浮动都有哪些方法

热门文章

  1. Linux 下 Nand Flash 调用关系
  2. GridView编辑删除
  3. C++: Type conversions
  4. Error:Execution failed for task &#39;:app:validateSigningDebug&#39;.
  5. vertx使用过程中浏览器端Cookie重复问题
  6. html+css简单的实现360搜索引擎首页面
  7. jun引导1.04可以让N3050支持6.2
  8. Redis学习笔记01-分布式锁
  9. OSG在VS2008下的配置安装
  10. 2018-8-10-win10-uwp-手把手教你使用-asp-dotnet-core-做-cs-程序