DOM扩展——自定义属性

DOM扩展——自定义属性

引言

  • 我们有时候在看别人的html代码的时候,会发现别人的标签中的自定义属性都会以data作为前缀,不同的单词都会用’-'相连,这是为啥呢?一种规范 or 一种语法?百度的一段htm代码

自定义属性

  • 看了DOM扩展后,发现原来是有一种专门的方法来操纵自定义属性的!

基本用法

了解 dataset属性

 <div id = 'myDiv' data-app-id = 'id01' data-myName = 'anan' active = 'true'>你好,李焕英!</div>
  • 在dom元素对象中有一个属性叫 dataset, 它是用来保存自定义属性的DOMStringMap(是一个对象,别看它后缀Map),但是只会保存以data-开头这种格式的自定义属性
let div = document.getElementById("myDiv");
console.log(div.dataset); 
// DOMStringMap
// appId: "23456"
// myname: "Michael"
// active属性没有

我们可以看到, active属性没有被保存到DOMStringMap这个对象中。但是data-app-id 和 data-myname转换成为了该对象的属性,且属性名去除了data和’-’,’-'去除后以驼峰命名法重新拼接,这就是DOM自定义属性的语法。

使用dataset属性来读取设置自定义属性


let div = document.getElementById("myDiv");
// 取得自定义数据属性的值
let appId = div.dataset.appId; // data-app-id
let myName = div.dataset.myname; // data-myname
// 设置自定义数据属性的值
div.dataset.appId = 23456;
div.dataset.myname = "Michael";
// 有"myname"吗?
if (div.dataset.myname) {
    console.log(`Hello, ${div.dataset.myname}`);
}

这里可能有人会对myname有点疑惑,我的自定义属性名不是写了data-myName吗, 那DOMStringMap保存的属性名不应该是myName吗?我的小宝贝啊,这是因为浏览器在读取属性时会把所有的所有的字母都转换成小写呀!所以在写自定义属性时不同的英文单词最好用’-'连接,不要用驼峰了。

  • 在jquery中使用.data()方法来操作自定属性,属性名是"驼峰化"的
console.log($(div).data('appId')); // 23456
$(div).data('appId', 'id02');
console.log($(div).data('appId')); // id02

总结

  1. ‘data-’开头告诉浏览器本属性是自定义的,这是一种代码的规范。
  2. 在实际编程中,还是尽量按照DOM的自定属性语法规范来写,这样也能让别人一眼就知道这个属性是你自己定义的,而不会怀疑这个是不是我不认识的html专有属性,然后就猜它的功能,哈哈哈
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值