ich um mit den attr-data-* Attribute von HTML5 bin zu spielen und die entsprechenden Javascript datasetKonvertieren von Daten- * Attribute zu einem Objekt
Ich bin viel dynamischer Formularverarbeitung zu tun, so dass ich am Ende Sachen wie diese bekommen:
<input data-feaux="bar" data-fizz="buzz"/>
Seit HTMLElement.dataset
gibt eine DOM string map
, die einzige Art, wie ich herausfinden, wie es in ein natives Objekt zu konvertieren ist:
var obj = JSON.parse(JSON.stringify(input_el.dataset))
Gibt es einen besseren Weg, dies zu tun?
Edit:
Warum sollte ich das tun? Sagen wir, ich habe viele, viele dieser Elemente. Ich möchte durch sie Schleife alle und schieben sie in eine Anordnung zur Verarbeitung später, das heißt
elements = document.querySelectorAll("input")
my_data_array = []
for(var i = 0; i < elements.length; i++) {
my_data_array.push(elements[i].dataset)
}
Jetzt habe ich eine Reihe von Objekten, das heißt [{feaux: "bar", fizz:"buzz"}....]
, dass ich arbeiten kann.
Allerdings, wenn ich nicht das DOM string map
in ein Objekt konvertieren, wird das Array nicht aufgefüllt bekommen (dh den obigen Code nicht funktioniert)
Edit 2
näher Sehen, es ist eigentlich ein DOM string map
, kein object
. Korrektur von Tippfehlern in der ursprünglichen Frage, um dies zu berücksichtigen.
Es ist bereits ein Objekt. Warum willst du, dass es nativ ist? –
@cookiemonster, weil 'DOM string object' nicht gerne in ein Array geschoben wird und ich die Schlüssel verliere; Ich habe meine Frage bearbeitet, um ein Beispiel zu geben – CamelBlues
In welchem Browser funktioniert das nicht? Funktioniert gut für mich in Firefox. ... funktioniert auch in Chrome. –