为了实现页面的懒加载,我们常常需要实现使用自定义的属性。详见点击打开链接
为了获取自定义的属性,我们常常需要element.dataset属性。
如下代码实现兼容版本的element.dataset属性。
实现思路:
1.对于兼容element.dataset属性,直接使用该方法。
通过element.dataset属性得到的是属性集,一个对象。
单独获取某个自定义的属性时, 对于data- 后面以-分隔的多个单词组成的属性名,获取时使用驼峰式命名。
2.对于不兼容该方法的,遍历元素的所有属性,找到该属性。
可以直接使用getAttribute得到属性。获取时,直接输入属性名。
代码如下:
function dataset(element) {
var obj={}; //用于存储对象的属性
var key,value,keyname;
if(element.dataset){
return element.dataset
}else{
var attrs=element.attributes; //获取元素的属性对象。返回值为对象
var len=attrs.length;
for (var i = 0; i < len; i++) {
key=attrs[i].name;
if(key.indexOf("data-")>-1){ //可以使用正则 /^data-\w+$/g.test(key)
value=attrs[i].value;
// var keyname=key.match(/^data-(\w+)$/)[1]; 可以使用正则获取属性名
keyname=key.slice(5);
obj[keyname]=value;
}
}
return obj;
}
}