关于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 Tab 导航插件 (23个)
Jun 11 Javascript
JS+CSS实现一个气泡提示框
Aug 18 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
node.js 使用ejs模板引擎时后缀换成.html
Apr 22 Javascript
深入理解JavaScript编程中的同步与异步机制
Jun 24 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
Oct 14 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
手把手教你实现 Promise的使用方法
Sep 02 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
thinkPHP分页功能实例详解
2017/05/05 PHP
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
js实现旋转木马效果
2017/03/17 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Python中方法链的使用方法
2016/02/23 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
python爬虫基本知识
2018/03/05 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
python实现人民币大写转换
2018/06/20 Python
python计算两个数的百分比方法
2018/06/29 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
应用电子技术专业个人求职信
2013/09/21 职场文书
服装设计专业求职信
2014/06/16 职场文书
民间个人借款协议书
2014/09/30 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
护理培训心得体会
2016/01/22 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android