兼容版的element.dataset

1. data 与 dataset的定义与使用

data-* 属性是 HTML5 中的新属性, 我们可以使用data-前缀设置需要的自定义属性,来存储页面或应用程序的私有自定义数据,

我们可以使用dataset属性(对象)访问在 HTML或 DOM中的元素上设置的所有自定义数据属性(data-*)集

例子:

<div id="student" data-age="12" data-name="zhang">张三</div>

可以通过以下方式获取

var ele = document.getElementById('student');  
var age = ele.dataset.age; // "12"

注意语法规则,属性名称 data-abc-def 与键值 abcDef 相对应

2.兼容性

所有主流浏览器都支持 data-* 属性,部分浏览器支持dataset

https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement/dataset

https://caniuse.com/#feat=dataset

3.兼容方案

function dataset(element){
    var obj={};
    if(element.dataset){
        return element.dataset;
    }else{
        for(var i=0;i<element.attributes.length;i++){
            var key=element.attributes[i].nodeName;
            if(/^data-\w+$/.test(key)){//判断是否以data-开头的属性名
                var value=element.attributes[i].nodeValue;//值
                var keyName=key.match(/^data-(\w+)/)[1];//键名
                obj[keyName]=value;//对象添加属性
            }
        }
    }
    return obj;
}
var ele = document.getElementById('student'); 
console.log(dataset(ele))
console.log(dataset(ele).age);

参考:

https://www.zhangxinxu.com/wordpress/2011/06/html5%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B1%9E%E6%80%A7%E5%AF%B9%E8%B1%A1dataset%E7%AE%80%E4%BB%8B/

https://blog.csdn.net/qq_21794603/article/details/72732150?utm_source=blogxgwz0

https://blog.csdn.net/qq_33745501/article/details/79647469

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值