私はあなたのために働くかもしれないここに概念を持っています。
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の「data」属性から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]);
}