关于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 选择器使用说明介绍
Apr 18 Javascript
ScrollDown的基本操作示例
Jun 09 Javascript
原生javascript实现的分页插件pagenav
Aug 28 Javascript
javascript实现带下拉子菜单的导航菜单效果
May 14 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 Javascript
ES6下React组件的写法示例代码
May 04 Javascript
详解使用vue实现tab 切换操作
Jul 03 Javascript
详解微信小程序Radio选中样式切换
Jul 06 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
vue element项目引入icon图标的方法
Jun 06 Javascript
jsonp跨域及实现百度首页联想功能的方法
Aug 30 Javascript
vue实现记事本功能
Jun 26 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
matplotlib中legend位置调整解析
2017/12/19 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
python删除字符串中指定字符的方法
2018/08/13 Python
python实现随机漫步算法
2018/08/27 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
Python-opencv 双线性插值实例
2020/01/17 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
细说CSS3中的选择符
2008/10/17 HTML / CSS
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
中英文自我评价常用句型
2013/12/19 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
单位接收函范文
2015/01/30 职场文书
大学生逃课检讨书
2015/05/04 职场文书
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android