关于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中取绝对值的2种方法
Jul 09 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
js实现字符串转日期格式的方法
May 20 Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 Javascript
Js 获取、判断浏览器版本信息的简单方法
Aug 08 Javascript
利用JQuery阻止事件冒泡
Dec 01 Javascript
AngularJS学习第二篇 AngularJS依赖注入
Feb 13 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
实例学习JavaScript读取和写入cookie
Jan 29 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
Jun 11 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
使用layui 的layedit定义自己的toolbar方法
Sep 18 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脚本的10个技巧(7)
2006/10/09 PHP
深入解析php模板技术原理【一】
2008/01/10 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
微信小程序 image组件遇到的问题
2019/05/28 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
python迭代器与生成器详解
2016/03/10 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Nike瑞士官网:Nike CH
2021/01/18 全球购物
公积金单位接收函
2014/01/11 职场文书
关爱空巢老人感想
2015/08/11 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
Java 在生活中的 10 大应用
2021/11/02 Java/Android
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS