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

推薦する

LinuxにNginxをインストールする正しい手順

序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...

WeChatアプレットはふるいを振る効果を実現

この記事では、WeChatアプレットの具体的なコードを参考までに共有します。具体的な内容は次のとおり...

JS 面接の質問: forEach はループから抜け出すことができますか?

この質問をされたとき、私は無知で頭が真っ白になりました。もちろん、正しく答えられませんでした。私はず...

簡単な計算機を実装する小さなプログラム

この記事の例では、簡単な計算機を実装するための小さなプログラムの具体的なコードを参考までに共有してい...

CSSとJSでロマンチックな流星群アニメーションを実現

1. レンダリング 2. ソースコードhtml < 本文 > < div クラス ...

CSS を使用して半透明の背景と不透明なテキストを実現する例

この記事では、CSS を使用して半透明の背景と不透明なテキストの効果を実現する方法の例を紹介します。...

MySQL における USING と HAVING の使用法の簡単な分析

この記事では、例を使用して MySQL での USING と HAVING の使用方法を説明します。...

Linux システムで Tomcat を自動的に起動するための設定方法の紹介

1. /etc/init.d ディレクトリに入ります: cd /etc/init.d 2. tomc...

Deepin Linuxでカーネルを手動でアップグレードする方法

deepinとUbuntuどちらもdebianをベースにしたディストリビューションであり、ここではU...

Dell R720 サーバーに Windows Server 2008 R2 をインストールする方法

注: この記事のすべての写真はインターネットから収集されたものであるため、DELL R720 サーバ...

フロントエンド開発者のための HTML 入門

1 HTML入門1.1 初めてのコード体験、最初のウェブページの作成XML/HTML コードコンテン...

Centos7.3 での mysql5.7 のインストールと設定のチュートリアル

この記事では、MySQL 5.7のインストールと設定のチュートリアルを参考までに紹介します。具体的な...

SpringBoot でマイクロサービスを構築するために Docker を使用した実際の記録を分析する

それは何ですか? Spring Boot は、Spring オープンソース組織のサブプロジェクトであ...

MySQL の完全バックアップとクイックリカバリ方法

過去 15 日間のデータをバックアップするシンプルな MySQL 完全バックアップ スクリプト。バッ...

Windows Server 2016 標準キー アクティベーション キー シリアル番号

Windows Server 2016 アクティベーション キーを皆さんと共有したいと思います。wi...