Я играю с attr-data-* атрибутами HTML5 и соответствующим javascript dataset
Я делаю много обработки динамической формы, поэтому в итоге получаю такие вещи:
<input data-feaux="bar" data-fizz="buzz"/>
Так как HTMLElement.dataset
возвращает DOM string map
, единственный способ понять, как его преобразовать в собственный объект:
var obj = JSON.parse(JSON.stringify(input_el.dataset))
Есть ли лучший способ сделать это?
Edit:
Почему я хочу это сделать? Скажем, у меня много, многие из этих элементов. Я хочу пропустить их все и вставить в массив для обработки позже, т.е.
elements = document.querySelectorAll("input")
my_data_array = []
for(var i = 0; i < elements.length; i++) {
my_data_array.push(elements[i].dataset)
}
Теперь у меня есть массив объектов, т.е. [{feaux: "bar", fizz:"buzz"}....]
, с которым я могу работать.
Однако, когда я не преобразовываю DOM string map
в объект, массив не заполняется (т.е. код выше не работает)
Изменить 2
Подойдя ближе, на самом деле это DOM string map
, а не object
. Исправление опечаток в исходном вопросе, чтобы отразить это.