如何实现浏览器兼容版的element.dataset
element.dataset能够获取元素的自定义属性,但是低版本的ie不支持,如何在低版本的ie上兼容类似的功能。
下面是我写的一个兼容IE的方法:
html1
<div id="qwe" data-my="123"></div>
javascript1
<div id="qwe" data-my="123"></div>
function getDataSet(elem){
if(elem.dataset){
return elem.dataset;
}
var datas = {};
var attrs = elem.attributes;
var nodeName,nodeNames;
for(var i = 0,attr;attr = attrs[i];i++){
nodeName = attr.nodeName;
if(nodeName.indexOf('data-')!==-1){
nodeNames = nodeName.slice(5).split("-");
nodeName = nodeNames[0];
} else{
continue;
}
for(var j=1;j<nodeNames.length;j++){
nodeName += nodeNames[j].slice(0,1).toUpperCase + nodeNames[j].slice(1);
}
datas[nodeName] = attr.nodeValue;
return datas;
}
}
document.write(getDataSet(document.getElementById("qwe")).my);
// 输出:123