Das Aufkommen von jQuery hat unsere Effizienz beim Betrieb von DOM erheblich verbessert und unsere Entwicklung auf ein höheres Niveau gebracht. Beispielsweise ist der Selektor von jQuery eine sehr leistungsstarke Funktion. Er umfasst Klassenselektoren, ID-Selektoren, Attributselektoren, Elementselektoren, Ebenenselektoren, Inhaltsfilterselektoren usw. Er ist sehr praktisch und schnell, und diese Selektoren sind gut kompatibel. Man kann sagen, dass der Betrieb von DOM mit jq-Selektoren Spaß macht und immer Spaß machen wird! Allerdings hat das Aufkommen der drei großen Frameworks Vue, React und Angular die Nutzungshäufigkeit von JQuery stark reduziert. JQuery weist zwar bestimmte Leistungsprobleme und verschiedene Fallstricke beim Betrieb von DOM und beim Binden von Daten auf, kann aber die leistungsstarke Existenz von JQ beim Betrieb von DOM immer noch nicht auslöschen! Nachdem wir nun so viel über die Großartigkeit von JQuery gesagt haben, stellt sich die Frage, wie viele seiner internen Prinzipien implementiert werden? Heute implementieren wir einfach einen Klassenselektor und einen Namensattributselektor ähnlich wie jQuery. Klassenauswahl: Funktion getElementsByClass(Klassenname) { var KlasseArr = []; var tags = document.getElementsByTagName("*"); für (var i = 0; i < tags.Länge; i++) { wenn (tags[i].nodeType == 1) { wenn (tags[i].getAttribute("Klasse") == Klassenname) { classArr.push(tags[i]); } } } gib classArr zurück; } Tatsächlich ist der Namensattributselektor derselbe wie der Klassenselektor, aber die Beurteilungsbedingung ist geringfügig geändert: Funktion getElementsByName(Name) { var nameArr = []; varnum = 0; var tags = document.getElementsByTagName("*"); für (var i = 0; i < tags.Länge; i++) { wenn (tags[i].nodeType == 1) { wenn (tags[i].getAttribute("name") == name) { nameArr.push(tags[i]); } } } gib nameArr zurück; } Der Namensattributselektor wird hauptsächlich in Formularoperationen verwendet. Im obigen Code gibt es ein nodeType-Attribut, mit dem der Knotentyp bestimmt wird. Es gibt 12 Werte für nodeType, 1 steht für das Knotenelement, 2 steht für das Attribut und 3 steht für den Textinhalt im Element oder Attribut. Diese drei Werte werden häufiger verwendet, während die anderen 9 eher selten zum Einsatz kommen. Wer mehr wissen möchte, kann einen Blick auf die API werfen. Hier müssen wir den Elementknoten abrufen, damit wir bestimmen können, ob der Knotentyp des aktuellen Elements 1 ist. Hier ist eine weitere Möglichkeit, mittels Rekursion alle untergeordneten Knoten (einschließlich Enkelknoten) eines Elements abzurufen: /** * Alle untergeordneten Knoten rekursiv abrufen * Knoten stellt den übergeordneten Knotentypwert dar, für den Sie alle untergeordneten Knoten abrufen möchten: 1 Element stellt ein Element dar. 2 Attr stellt ein Attribut dar. 3 Text stellt den Textinhalt in einem Element oder Attribut dar. 4 CDATASection stellt einen CDATA-Abschnitt in einem Dokument dar (Text, der nicht vom Parser analysiert wird). 5 EntityReference steht für Entity-Referenz. 6 Entity steht für Entity. 7 ProcessingInstruction steht für Verarbeitungsanweisung. 8 Comment steht für Kommentar. 9 Document steht für das gesamte Dokument (den Stammknoten des DOM-Baums). 10 DocumentType stellt eine Schnittstelle zu Entitäten bereit, die für ein Dokument definiert sind. 11 DocumentFragment stellt ein leichtes Dokumentobjekt dar, das einen Teil eines Dokuments enthalten kann. 12 Notation stellt ein in einer DTD deklariertes Symbol dar. */ var allChildNodes = Funktion (Knoten, Typ) { // 1. Erstellen Sie ein Array aller Knoten var allCN = []; // 2. Alle Knoten rekursiv abrufen var getAllChildNodes = function (node, type, allCN) { // Alle untergeordneten Knoten des aktuellen Elements abrufen var Knoten = Knoten.Unterknoten; // Hole die untergeordneten Knoten der Knoten für (var i = 0; i < nodes.length; i++) { var Kind = Knoten[i]; // Bestimmen Sie, ob es sich um einen Knoten des angegebenen Typs handelt, wenn (child.nodeType == Typ) { allCN.push(Kind); } getAllChildNodes(Kind, Typ, alleCN); } } getAllChildNodes(Knoten, Typ, allCN); // 3. Gibt das Array aller Knoten zurück return allCN; } // Anruf: // Alle Knoten im Textkörper abrufen allChildNodes(document.querySelector('body'), 1); //Alle Nur-Text-Knoten im Textkörper abrufen allChildNodes(document.querySelector('body'), 3)
Oben sind die Einzelheiten der Beispielschritte zum Implementieren von Klassenselektoren und Namensattributselektoren in js aufgeführt. Weitere Informationen zum Implementieren von Klassenselektoren und Namensattributselektoren in js finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Befehle zum Deaktivieren und Aktivieren von MySQL-Fremdschlüsseleinschränkungen
Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...
Löschen Sie zuerst MySQL: sudo apt-get remove mys...
In diesem Artikel wird hauptsächlich erläutert, w...
Bei vielen Benutzern ist dieser Fehler beim Start...
Vorwort: In diesem Artikel werden nur die Schritt...
Inhaltsverzeichnis Vorwort 1. SS-Befehl 2. Gesamt...
Wenn Sie 5 Datensätze in Tabelle1 einfügen möchte...
Dieser Artikel veranschaulicht anhand eines Beisp...
Inhaltsverzeichnis 1. Unzip-Befehl 1.1 Syntax 1.2...
In diesem Artikel wird der spezifische Code des o...
Im Frontend-Designentwurf sieht man oft Schließen...
Inhaltsverzeichnis 1. Einleitung 2. Verstehen Sie...
Installieren Sie die entpackte Version der MySql-...
Hintergrund Verwenden Sie Idea mit Docker, um den...
1. Was ist Wir können die Kommunikation zwischen ...