js でクラスセレクターと名前属性セレクターを実装する手順の例

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられました。たとえば、jQuery のセレクターは非常に強力な機能です。クラス セレクター、ID セレクター、属性セレクター、要素セレクター、レベル セレクター、コンテンツ フィルター セレクターなどが含まれます。非常に便利で高速であり、これらのセレクターは互換性も良好です。jq セレクターで DOM を操作するのは楽しいことであり、ずっと楽しいと言えるでしょう。しかし、Vue、React、Angularという3大フレームワークの登場により、JQueryの使用頻度は大幅に減少しました。JQueryには確かにDOM操作やデータバインディング時の一定のパフォーマンス上の問題やさまざまな落とし穴がありますが、それでもDOM操作におけるJQの強力な存在を消すことはできません。

JQuery の素晴らしさについてはここまで述べてきましたが、その内部原則の多くはどのように実装されているのでしょうか?今日は、jQuery に似たクラス セレクターと名前属性セレクターを実装するだけです。

クラスセレクター:

関数 getElementsByClass(クラス名) {
   var classArr = [];
   タグを document.getElementsByTagName("*");

   (var i = 0; i < tags.length; i++) {
    タグ[i].nodeType == 1の場合{
     tags[i].getAttribute("class") == classNameの場合{
      クラスArr.push(タグ[i]);
     }
    }
   }
   クラスArrを返します。
}

実は、name 属性セレクターは class セレクターと同じですが、判定条件が少し異なります。

関数 getElementsByName(名前) {
   var nameArr = [];
   var 数値 = 0;
   タグを document.getElementsByTagName("*");

   (var i = 0; i < tags.length; i++) {
    タグ[i].nodeType == 1の場合{
     tags[i].getAttribute("name") == nameの場合{
      nameArr.push(タグ[i]);
     }
    }
   }

   nameArr を返します。
}

名前属性セレクターは主にフォーム操作で使用されます。

上記のコードには nodeType 属性があり、これを使用してノードの種類を決定します。nodeType には 12 個の値があり、1 はノード要素、2 は属性、3 は要素または属性内のテキスト コンテンツを表します。これら 3 つの値はより頻繁に使用されますが、他の 9 つの値はあまり使用されません。詳細を知りたい場合は、API を参照してください。ここでは、要素ノードを取得する必要があるため、現在の要素の nodeType が 1 かどうかを判断します。

再帰を使用して要素のすべての子ノード (孫ノードを含む) を取得する別の方法を次に示します。

  /** 
   * すべての子ノードを再帰的に取得する * 
   ノードは、すべての子ノードを取得する親ノード タイプ値を表します。
   1 Element は要素を表します 2 Attr は属性を表します 3 Text は要素または属性内のテキスト コンテンツを表します 4 CDATASection はドキュメント内の CDATA セクション (パーサーによって解析されないテキスト) を表します
   5 EntityReference はエンティティ参照を表します 6 Entity はエンティティを表します 7 ProcessingInstruction は処理命令を表します 8 Comment はコメントを表します 9 Document はドキュメント全体 (DOM ツリーのルート ノード) を表します
   10 DocumentType は文書に定義されたエンティティへのインターフェースを提供します 11 DocumentFragment は文書の一部を保持できる軽量の Document オブジェクトを表します 12 Notation は DTD で宣言されたシンボルを表します */
  var allChildNodes = 関数 (ノード、タイプ) {
   // 1. すべてのノードの配列を作成します。var allCN = [];

   // 2. 再帰的にすべてのノードを取得する var getAllChildNodes = function (node, type, allCN) {
    // 現在の要素のすべての子ノードを取得します
    var ノード = node.childNodes;
    // ノードの子ノードを取得します for (var i = 0; i < nodes.length; i++) {
     var 子 = ノード[i];
     // 指定されたタイプのノードであるかどうかを判定します。if (child.nodeType == type) {
      allCN.push(子);
     }
     すべての子ノードを取得します(子、タイプ、すべてのCN)。
    }
   }
   すべての子ノードを取得します(ノード、タイプ、すべてのCN)。
   // 3. すべてのノードの配列を返します。 return allCN;
  }

  // 電話:
  // 本文内のすべてのノードを取得します。 allChildNodes(document.querySelector('body'), 1);
  
  // 本文内のすべてのプレーンテキストノードを取得します allChildNodes(document.querySelector('body'), 3)

著者: 小淮

出典: http://tnnyang.cnblogs.com

上記は、js でクラスセレクターと名前属性セレクターを実装するための例の手順の詳細です。js でクラスセレクターと名前属性セレクターを実装する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • js は円形メニューセレクターを実装します
  • JS 論理判断セレクターに関する一般的な議論 || &&
  • JavaScript のセレクターを理解する
  • Vue.js で iView 日付ピッカーを使用して開始時間と終了時間の検証機能を設定する
  • Vue2.0.js マルチレベルリンクセレクタ実装方法
  • JS の一般的なセレクタ、属性、メソッド呼び出しについての簡単な説明
  • Javascript カプセル化 ID、クラス、要素セレクター メソッドの例
  • JSはJQueryセレクター機能を模倣する
  • js でセレクターとして $(#ID) を使用する方法について簡単に説明します (id が繰り返される場合)
  • jsは秒単位の正確な日付ピッカーの完全な例を実装します

<<:  MySQL 外部キー制約の無効化と有効化コマンド

>>:  Unix/Linux システムにおける nobody ユーザーと nologin の詳細な紹介

推薦する

ウェブページ上の小さなスペースに大きな画像を配置する方法

出典: www.bamagazine.comウェブページのバナー、ニュースの見出しの周りのスペース、...

MySQL ストレージエンジンの簡単な紹介

1. MySQL アーキテクチャストレージ エンジンを紹介する前に、まずは MySQL アーキテクチ...

使用したコマンドを表示するLinuxコマンドメソッドの概要

システムでは多くのコマンドが使用されていますが、使用したコマンドをどのように確認すればよいでしょうか...

nginx-ingress-controller ログ永続化ソリューションのソリューション

最近、nginx-ingress-controller のアプリケーションについて説明した公開アカウ...

CentOS 7 に Docker 1.8 をインストールする詳細な手順

Docker は、次の CentOS バージョンでの実行をサポートしています。 • CentOS 7...

MySQL トリガーの紹介、トリガーの作成、使用制限の分析

この記事では、例を使用して、MySQL トリガーの概要、トリガーの作成方法、およびトリガーの使用上の...

フロントエンドJavaScriptは関数のカリー化を完全に理解している

目次1. カレーとは何か2. カレーの用途3. カリー化ユーティリティ関数をカプセル化する方法 1....

Windows 10 での MySQL 5.7.19 インストール チュートリアル MySQL のルート パスワードを忘れた場合の変更方法

MySQL 5.7.19のインストールを例に挙げると、まずダウンロードしますもちろん、最初に行うこと...

js の一般的でない演算子と演算子の概要

一般的な演算子と JavaScript の演算子の概要カテゴリオペレーター算術演算子+、–、*、/、...

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

スペース均等互換性の問題を解決する2つの方法についての簡単な説明

flex は 2009 年のリリース以来、ほぼすべてのブラウザでサポートされています。シンプルでレス...

Vueウォッチの監視方法の概要

目次1. Vueにおけるwatchの役割はその名の通り、監視の役割です。 2. このオブジェクトのプ...

jsは、州、市、地区の3レベルのリンクの非選択ドロップダウンボックスバージョンを実現します。

インターネットで3レベルリンクを検索したところ、すべてオプションで書かれていました。突然、別の方法で...

要素 el-button ボタンコンポーネントの使用の詳細な説明

1. 背景ボタンは非常によく使われており、Element のボタン機能は非常に包括的です。この記事で...

Linux での tcpdump コマンドの詳細な分析と使用方法

導入簡単に言えば、tcpdump は、ネットワーク上のトラフィックをダンプし、ユーザーの定義に従って...