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 の詳細な紹介

推薦する

Sublime / vscode による HTML コード生成の迅速な実装

目次基本的なHTML構造div とクラス名のショートカット キーを生成するクラス名を持つdiv ID...

Vueのインストールと使用

目次1. Vueのインストール方法1: CDNの導入方法2: 直接ダウンロードしてインポートする方法...

Linuxカーネルの浮動小数点演算のサポートに関する簡単な説明

現在、ほとんどの CPU は浮動小数点ユニット (FPU) をサポートしています。FPU は、プロセ...

formData 形式タイプを使用してファイルをアップロードする Vue の例

Vue では、一般的にフロントエンドとバックエンドを分離したプロジェクトがあり、データ操作を実装する...

jQueryブリージングカルーセルの制作原理を詳しく解説

この記事では、jQueryブリージングカルーセル制作原理の具体的なプロセスを参考までに紹介します。具...

Linux ファイアウォールを設定してポート 80 と 3306 を開く方法

ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...

iviewは動的なフォームとカスタム検証期間の重複を実装します

フォーム項目を動的に追加するiview の動的なフォーム追加は非常に簡単です。フォーム項目を配列に設...

Windows 10にOdoo12開発環境をインストールする方法

序文多くの友人は Mac コンピューターを持っていないと言っていますが、Windows 開発は実際に...

HTML タイトル属性をラップする方法

数日前にプログラムを書いていたとき、プロンプト情報 (TITLE) を新しい行で囲みたいと思いました...

HTML の基本的な使用法には、リンク、スタイルシート、span、div などが含まれます。

1. リンクハイパーテキスト リンクは HTML において非常に重要です。基本的な形式は次のとおりで...

MySQL 権限制御の詳細な説明

目次mysql 権限制御権限システムテーブル変更後にMySQLの権限を有効にする方法権限の付与と取り...

JavaScript ではおそらく switch 文を使う必要はない

目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...

MYSQL大規模書き込み問題の最適化の詳細な説明

概要: MySQL のパフォーマンス最適化について話すとき、誰もがクエリ パフォーマンスを向上させる...

Vue3でelement-plusを使用する方法の詳細な説明

目次1. インストール2. main.jsにインポートする3. 使用Vue3がリリースされてからしば...

React の 10 個のフックの紹介

目次ReactHook とは何ですか? Reactは現在フックを提供している1. 使用状態2.use...