Ich möchte alle Attribute in einem HTML-Element in ein Array einfügen: Als hätte ich ein jQuery-Objekt, dessen HTML folgendermaßen aussieht:
<span name="test" message="test2"></span>
Jetzt besteht eine Möglichkeit darin, den hier beschriebenen XML-Parser zu verwenden , aber dann muss ich wissen, wie ich den HTML-Code meines Objekts erhalte.
der andere weg ist es mit jquery zu machen, aber wie? Die Anzahl der Attribute und die Namen sind generisch.
Vielen Dank
Übrigens: Ich kann mit document.getelementbyid oder ähnlichem nicht auf das Element zugreifen.
getElementById
-var el = document.getElementById($(myObj).attr("id"));
get
Methode abrufen ... zB:var obj = $('#example').get(0);
Sie können dieses einfache Plugin als $ ('# some_id') verwenden. GetAttributes ();
quelle
Einfach:
quelle
Attr.nodeValue
ist zugunsten von veraltetvalue
, sagt Google Chrome. Das könnte also seinthis.name + ':' + this.value
. Die Attr-SchnittstelleDa in IE7 elem.attributes alle möglichen Attribute auflistet, nicht nur die aktuellen, müssen wir den Attributwert testen. Dieses Plugin funktioniert in allen gängigen Browsern:
Verwendung:
quelle
Setter und Getter!
Verwenden:
quelle
jQuery.attr
.jQuery.attr
im Setter verwenden, aber es wäre wahrscheinlich vorteilhaft, es auch im Getter zu verwenden.Verwenden Sie
.slice
, um die zu konvertierenattributes
Eigenschaft in ArrayDie
attributes
Eigenschaft von DOM-Knoten ist aNamedNodeMap
, ein Array-ähnliches Objekt.Ein Array-ähnliches Objekt ist ein Objekt, das eine
length
Eigenschaft hat und dessen Eigenschaftsnamen aufgelistet sind, ansonsten aber eigene Methoden hat und nicht von ihnen erbtArray.prototype
Die
slice
Methode kann verwendet werden, um Array-ähnliche Objekte in ein neues Array zu konvertieren .quelle
attrs
, können Sie auf den Namen des Attributs mit dername
Eigenschaft für das Element zugreifen .Dieser Ansatz funktioniert gut, wenn Sie alle Attribute mit Namen und Wert in Objekten abrufen müssen, die in einem Array zurückgegeben werden.
Beispielausgabe:
Wenn Sie nur ein Array von Attributnamen für dieses Element möchten, können Sie einfach die Ergebnisse zuordnen:
quelle
Roland Bouman ‚s Antwort ist die beste, einfache Vanilla Art und Weise. Ich bemerkte einige Versuche mit jQ-Steckern, aber sie schienen mir einfach nicht "voll" genug zu sein, also machte ich meine eigenen. Der einzige Rückschlag war bisher die Unfähigkeit, auf dynamisch hinzugefügte Attribute zuzugreifen, ohne direkt aufzurufen
elm.attr('dynamicAttr')
. Dies gibt jedoch alle natürlichen Attribute eines jQuery-Elementobjekts zurück.Das Plugin verwendet einfache Aufrufe im jQuery-Stil:
Sie können auch einen zweiten Zeichenfolgenparameter hinzufügen, um nur einen bestimmten attr zu erhalten. Dies wird für eine Elementauswahl nicht wirklich benötigt, da jQuery bereits bereitstellt
$(elm).attr('name')
. Meine Version eines Plugins ermöglicht jedoch mehrere Rückgaben. So zum Beispiel ein Anruf wieFührt zu einer Array-
[]
Rückgabe von Objekten{}
. Jedes Objekt sieht folgendermaßen aus:Plugin
Erfüllt
jsFiddle
Code-Snippet anzeigen
quelle
Viel prägnantere Möglichkeiten:
Alter Weg (IE9 +):
ES6-Weg (Edge 12+):
document.querySelector()
Gibt das erste Element im Dokument zurück, das dem angegebenen Selektor entspricht.Element.attributes
Gibt ein NamedNodeMap- Objekt zurück, das die zugewiesenen Attribute des entsprechenden HTML-Elements enthält.[].map()
Erstellt ein neues Array mit den Ergebnissen des Aufrufs einer bereitgestellten Funktion für jedes Element im aufrufenden Array.Demo:
Code-Snippet anzeigen
quelle
Hilft das?
Diese Eigenschaft gibt alle Attribute eines Elements für Sie in ein Array zurück. Hier ist ein Beispiel.
Um die Attribute vieler Elemente abzurufen und zu organisieren, empfehle ich, ein Array aller Elemente zu erstellen, die Sie durchlaufen möchten, und dann ein Unterarray für alle Attribute jedes Elements zu erstellen, das durchlaufen wird.
Dies ist ein Beispiel für ein Skript, das die gesammelten Elemente durchläuft und zwei Attribute druckt. In diesem Skript wird davon ausgegangen, dass immer zwei Attribute vorhanden sind. Sie können dies jedoch problemlos durch weitere Zuordnung beheben.
quelle
Bei jeder Antwort fehlt die einfachste Lösung mit getAttributeNames !
Es ruft die Namen aller aktuellen Attribute des Elements als reguläres Array ab, das Sie dann auf ein schönes Objekt mit Schlüsseln / Werten reduzieren können.
quelle
Stellen Sie sich vor, Sie haben ein HTML-Element wie das folgende:
Eine Möglichkeit, alle Attribute zu erhalten, besteht darin, sie in ein Array zu konvertieren:
Und unten ist die Zeichenfolge, die Sie erhalten (aus dem Beispiel), die alle Attribute enthält:
quelle
Versuchen Sie so etwas
und dann alle Attribute erhalten
für ein Array von Attributen verwenden
quelle
haben
<div id="mydiv" a='1' b='2'>...</div>
kann verwendenquelle
Sehr einfach. Sie müssen nur das Attributelement durchlaufen und dessen nodeValues in ein Array verschieben:
Wenn Sie den Namen des Attributs möchten, können Sie 'nodeValue' durch 'nodeName' ersetzen.
quelle
Attribute zur Objektkonvertierung
* Benötigt: lodash
Dadurch werden alle HTML-Attribute in ein verschachteltes Objekt konvertiert
Beispiel HTML:
<div custom-nested-path1="value1" custom-nested-path2="value2"></div>
Ergebnis:
{custom:{nested:{path1:"value1",path2:"value2"}}}
Wenn parseJson auf true gesetzt ist, werden json-Werte in Objekte konvertiert
quelle
In Javascript:
So greifen Sie auf die Attributnamen und -werte zu:
quelle