Mam zabawy z atrybutami attr-data-* z HTML5 i odpowiedniego javascript datasetKonwersja data- * atrybuty do obiektu
robię dużo dynamicznego przetwarzania formularzy, więc w końcu się rzeczy tak:
<input data-feaux="bar" data-fizz="buzz"/>
Od HTMLElement.dataset
zwraca DOM string map
, jedynym sposobem mogę dowiedzieć się, jak przekształcić go w natywnej przedmiotu jest:
var obj = JSON.parse(JSON.stringify(input_el.dataset))
Czy jest lepszy sposób to zrobić?
Edit:
Dlaczego miałbym to zrobić? Załóżmy, że mam wiele, wiele z tych elementów. Chcę pętli przez nich wszystkich i odsyła je do tablicy w celu przetworzenia później, tj
elements = document.querySelectorAll("input")
my_data_array = []
for(var i = 0; i < elements.length; i++) {
my_data_array.push(elements[i].dataset)
}
Teraz mam tablicę obiektów, tj [{feaux: "bar", fizz:"buzz"}....]
że mogę pracować.
Jednak, kiedy nie przekształcić DOM string map
do obiektu, tablica nie uzyskać zaludnionych (tj powyższy kod nie działa)
Edycja 2
Patrząc bliżej, w rzeczywistości jest to DOM string map
, a nie object
. Poprawianie literówek w oryginalnym pytaniu, aby to odzwierciedlić.
To już jest obiekt. Dlaczego chcesz być natywny? –
@ Cookieonster, ponieważ 'DOM string object' nie lubi być wepchniętym do tablicy i tracę klucze; Zmieniłem moje pytanie, by podać przykład: – CamelBlues
W jakiej przeglądarce nie działa? Działa dobrze dla mnie w Firefoksie. ... działa też w Chrome. –