关于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 相关文章推荐
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
JavaScript定义类的几种方式总结
Jan 06 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
vue-resourse将json数据输出实例
Mar 08 Javascript
vue axios请求超时的正确处理方法
Apr 02 Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 Javascript
微信小程序实现搜索功能
Mar 10 Javascript
微信小程序实现搜索框功能及踩过的坑
Jun 19 Javascript
js判断鼠标移入移出方向的方法
Jun 24 Javascript
vue实现列表滚动的过渡动画
Jun 29 Javascript
React Native项目框架搭建的一些心得体会
May 28 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验证码生成代码
2015/11/11 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
详解javascript高级定时器
2015/12/31 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
python字符串中的单双引
2017/02/16 Python
python九九乘法表的实例
2017/09/26 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Ajax和javascript的区别
2013/07/20 面试题
教学评估实施方案
2014/03/16 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
公司承诺书格式范文
2015/04/28 职场文书
人工作失职检讨书
2015/05/05 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
python实现学员管理系统(面向对象版)
2022/06/05 Python