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

Der Unterschied und die Verwendung von Datum/Uhrzeit und Zeitstempel in MySQL

1. Wie wird die aktuelle Uhrzeit in MySQL dargest...

Detaillierte grafische Erklärung der MySQL-Abfragesteuerungsanweisungen

MySQL-Abfrage-Steueranweisungen Felddeduplizierun...

Eine umfassende Analyse der Möglichkeiten von Nginx

Vorwort Dieser Artikel konzentriert sich nur dara...

Detaillierte Schritte zur Installation der XML-Erweiterung in PHP unter Linux

Installieren der XML-Erweiterung in PHP Linux 1. ...

Detaillierte Schritte zur Installation von MySQL 8.0.18-winx64 unter Win10

1. Gehen Sie zunächst auf die offizielle Website,...

Detaillierte Erklärung zur Verwendung von React.cloneElement

Inhaltsverzeichnis Die Rolle von cloneElement Anw...

Detaillierte Erklärung der Funktionsweise der Node.js-Middleware

Inhaltsverzeichnis Was ist Express-Middleware? Vo...

Tutorial zur Installation und Verwendung von virtualenv in Deepin

virtualenv ist ein Tool zum Erstellen isolierter ...

Tutorial zum Erstellen des File-Sharing-Dienstes Samba unter CentOS6.5

Samba-Dienste: Dieser Inhalt dient als Referenz f...

Das WeChat-Applet verwendet die Videoplayer-Videokomponente

In diesem Artikelbeispiel wird der spezifische Co...