我在这里有一个可能对你有用的概念。
var el = document.getElementById("universals");
for(var i=0;i<el.attributes.length;i++){
if((el.attributes[i].nodeName+"").indexOf("data-")>-1){
var key=(el.attributes[i].nodeName+"").substring(5);
var value=el.attributes[i].value;
alert(key+": "+value);
}
}
这是我提出的基本想法,似乎效果很好。我还创建了一个函数,它使用上面的这个方法从 HTMLElements“数据”属性中返回一个 Name-Value-Pair 对象。
function data2Obj(id){
var obj={};
var el=document.getElementById(id);
for(var i=0;i<el.attributes.length;i++){
if((el.attributes[i].nodeName+"").indexOf("data-")>-1){
var key=(el.attributes[i].nodeName+"").substring(5);
var value=el.attributes[i].value;
if(value.toLowerCase()=="true")value=true;
else if(value.toLowerCase()=="false")value=false;
else if((parseInt(value)+"")==value)value=parseInt(value);
obj[key]=value;
}
}
return obj;
}
这可以很容易地修改为接受一个类或任何其他选择 HTMLElements 的方法。
如果您获取此函数的返回并遍历对象,您应该得到您想要的结果。
var datas = data2Obj("universal");
for(var k in datas){
alert(k+": "+datas[k]);
}