关于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 相关文章推荐
JQuery实现倒计时按钮具体方法
Nov 14 Javascript
根据当前时间在jsp页面上显示上午或下午
Aug 18 Javascript
jQuery实现菜单式图片滑动切换
Mar 14 Javascript
js判断手机号运营商的方法
Oct 23 Javascript
Underscore源码分析
Dec 30 Javascript
深入浅析AngularJS和DataModel
Feb 16 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
jQuery 获取页面li数组并删除不在数组中的key
Aug 02 Javascript
jQuery实现立体式数字滚动条增加效果
Dec 21 Javascript
js中的深浅拷贝问题简析
May 10 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 Javascript
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 03 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中实现接收多个name相同但Value不相同表单数据实例
2015/02/03 PHP
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
python能自学吗
2020/06/18 Python
用python绘制樱花树
2020/10/09 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
Python使用openpyxl复制整张sheet
2021/03/24 Python
兼职业务员岗位职责
2014/01/01 职场文书
运动会加油稿50字
2015/07/21 职场文书
社区宣传标语口号
2015/12/26 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书