Я играл вокруг с 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
в объект, массив не заполнит список (т.е. выше код не работает)
Edit 2
Приглядевшись, это фактически DOM string map
, а не object
. Исправление опечаток в исходном вопросе, чтобы отразить это.
Это уже объект. Почему вы хотите, чтобы это было родным? –
@cookiemonster, потому что 'DOM string object' не нравится вставлять в массив, и я теряю ключи; Я отредактировал мой вопрос, чтобы привести пример – CamelBlues
В каком браузере это не работает? Работает отлично для меня в Firefox. ... также работает в Chrome. –