Beispielschritte zum Implementieren von Klassenselektoren und Namensattributselektoren in js

Beispielschritte zum Implementieren von Klassenselektoren und Namensattributselektoren in js

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)

Autor: Xiaohuai

Quelle: http://tnnyang.cnblogs.com

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:
  • js implementiert einen kreisförmigen Menüwähler
  • Eine allgemeine Diskussion über JS-Selektoren für logische Urteile || &&
  • Selektoren in JavaScript verstehen
  • Verwenden Sie den iView-Datumswähler in Vue.js und legen Sie die Überprüfungsfunktion für Start- und Endzeit fest
  • Implementierungsmethode für mehrstufige Verknüpfungsselektoren in Vue2.0.js
  • Eine kurze Diskussion über die gängigen Selektoren, Attribute und Methodenaufrufe in JS
  • Beispiel für eine Javascript-Kapselungs-ID, eine Klassen- und Elementauswahlmethode
  • JS imitiert die JQuery-Selektorfunktion
  • Eine kurze Erläuterung zur Verwendung von $(#ID) als Selektor in js (wenn die ID wiederholt wird)
  • js implementiert ein vollständiges Beispiel für einen sekundengenauen Datumswähler

<<:  Befehle zum Deaktivieren und Aktivieren von MySQL-Fremdschlüsseleinschränkungen

>>:  So deaktivieren Sie die Überprüfung auf Fremdschlüsseleinschränkungen in untergeordneten MySQL-Tabellen

Artikel empfehlen

Concat() von kombinierten Feldern in MySQL

Inhaltsverzeichnis 1. Einleitung 2. Haupttext 2.1...

So entfernen Sie MySQL aus Ubuntu und installieren es neu

Löschen Sie zuerst MySQL: sudo apt-get remove mys...

So geben Sie Parametervariablen extern im Docker an

In diesem Artikel wird hauptsächlich erläutert, w...

Detaillierte Erklärung des Linux-Befehls unzip

Inhaltsverzeichnis 1. Unzip-Befehl 1.1 Syntax 1.2...

Natives JS-objektorientiertes Tippspiel

In diesem Artikel wird der spezifische Code des o...

Ausführliche Erklärung dieses Schlüsselworts in JavaScript

Inhaltsverzeichnis 1. Einleitung 2. Verstehen Sie...

Detaillierte Erklärung, wie Komponenten in React kommunizieren

1. Was ist Wir können die Kommunikation zwischen ...