关于HTML5的data-*自定义属性的总结


Posted in Javascript onMay 05, 2018

本文讲述了关于HTML5的data-*自定义属性。分享给大家供大家参考,具体如下:

一、关于html元素的特性

1.html元素都存在一些标准的特性:

    id 元素在文档中的唯一标识符;

    title 有关元素的附加说明信息,一般通过工具提示条显示出来;

    lang 元素内容的语言代码,很少使用;

    dir 语言的方向,很少使用;

    className,与元素的class特性对应,考虑到与ECMAScript的保留字class的冲突,因此命名为className;

2.操作特性的方法:

    getAttribute() 获取相关特性,也可以获取到自定义的特性,区别于使用DOM元素的属性获取;   

    setAttribute() 设置相关特性; 

    removeAttribute() 删除相关特性;

3.关于获取html元素特性中使用getAttribute()与直接使用DOM元素的属性获取的区别 :

例如:

var header=document.getElementById('header');
console.log(header.id);//header
console.log(header.getAttribute('id'));//header
console.log(header.title);//test
console.log(header.getAttribute('title'));//test
console.log(header.myTitle);//undefined
console.log(header.getAttribute('myTitle'));//monster1935

在本文示例中演示了通过两种方法获取html元素的标准特性以及自定义特性。可以发现:

getAttribute()既可以访问标准特性也可以访问自定义特性,而是用DOM元素本身属性访问html元素特性的时候只能访问标准特性。

原因:

html元素中只有标准特性才会以属性的形式添加到DOM对象中。

特殊情况:

有两类特性,虽有在DOM对象中有对应的属性名,但是属性的值与通过getAttribute()返回的值并不相同。

1.style特性:

使用DOM对象属性访问style的时候,返回的是一个对象,而使用getAttribute()方法获取的时候返回的是css文本。

2.事件处理程序(例如:onclick):

使用DOM对象的属性访问的时候,返回的是一个JavaScript函数,而通过getAttribute()方法获取时返回的是javas代码。

使用方法:

只有在获取自定义特性的时候使用getAttribute()方法,操作DOM的时候,使用对象的属性来获取。

二、Html5中的自定义属性

1.Html5规范中规定自定义属性需要添加前缀data-,目的是提供与渲染无关的信息。

2.使用getAttribute()方法以及setAttribute()方法操作自定义属性。

例如:

var user=document.getElementById('user');
//使用attributes方法操作属性
//获取相关属性值
var name=user.getAttribute('data-name');
console.log(name)//monster1935
var age = user.getAttribute('data-age');
console.log(age);//123
//设置相关属性值
user.setAttribute('data-sex','male');
console.log(user.getAttribute('data-sex'));//male

上述示例中展示了使用getAttribute()以及setAttribute()方法操作html元素的自定义属性。

3.使用dataset操作自定义属性

例如:

var el=document.querySelector('#user');
console.log(el.id);
console.log(el.dataset); //返回的是一个DomStringMap对象
console.log(el.dataset.name);
console.log(el.dataset.age);
// 设置相关属性
el.dataset.home="shandong";
console.log(el.dataset);
// 删除相关属性
// delete el.dataset.home;
el.dataset.home = null;
console.log(el.dataset);

以上示例展示了使用dataset属性来操作自定义属性。dataset属性的值是一个DOMStringMap的一个示例,是一个名值对的映射。在这个映射中,每个data-name的形式的属性都有一个对应的属性,不同的是属性名中没有data-前缀。(比如,自定义属性是data-name,映射中对应的属性就是name).还有一点需要注意的是如果data-属性名中包含了连字符(比如:data-date-of-birth),则映射中对应的属性为dateOfBirth,即转换为相应的驼峰格式来显示。

4.dataset属性的兼容性问题

Chrome 8+ Firefox(Gecko) 6.0+ Internet Explorer 11+ Opera 11.10+ Safari 6+

5.使用data-属性选择器

1.获取相关DOM元素

var elem=document.querySelectorAll("[data-name='monster1935']");

2.设置相关css样式

<style>
  div{
    width:100px;
    height:200px;
    margin:20px;
  }
  div[data-name="monster"]{
    background-color: green;
  }
  div[data-name="monster1935"]{
    background-color: red
  }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript attachEvent传递参数的办法
Dec 14 Javascript
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
May 03 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
Aug 01 Javascript
总结Javascript中的隐式类型转换
Aug 24 Javascript
Javascript中关于Array.filter()的妙用详解
Dec 04 Javascript
详解vue模拟加载更多功能(数据追加)
Jun 23 Javascript
Node.js中流(stream)的使用方法示例
Jul 16 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 Javascript
JavaScript事件发布/订阅模式原理与用法分析
Aug 21 Javascript
Vue2.2.0+新特性整理及注意事项
Aug 22 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
深入浅析Vue.js计算属性和侦听器
May 05 #Javascript
详解js跨域请求的两种方式,支持post请求
May 05 #Javascript
vue 注册组件的使用详解
May 05 #Javascript
Vue三层嵌套路由的示例代码
May 05 #Javascript
动态加载JavaScript文件的3种方式
May 05 #Javascript
Node.js的Koa实现JWT用户认证方法
May 05 #Javascript
浅谈vue项目可以从哪些方面进行优化
May 05 #Javascript
You might like
PHP判断文件是否存在、是否可读、目录是否存在的代码
2012/10/03 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
javascript帧动画(实例讲解)
2017/09/02 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
原生js实现购物车功能
2020/09/23 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
快速入手Python字符编码
2016/08/03 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python @property的用法及含义全面解析
2018/02/01 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
《大海那边》教学反思
2014/04/09 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
加油口号大全
2014/06/13 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
假期安全教育广播稿
2014/10/04 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
2015年资料员工作总结
2015/04/25 职场文书
四年级数学教学反思
2016/02/16 职场文书
MySQL的存储过程和相关函数
2022/04/26 MySQL