コアポイント
-
nodeList.jsは、jQueryのDOM操作の代替として、同様の機能を提供しますが、(圧縮後4K)、ネイティブブラウザーAPIの改善を利用します。
-
jQueryとは異なり、nodelist.jsはノードアレイを単一ノードとして扱い、クリーナーコードを有効にし、ノーデリストオブジェクト操作を容易にします。
-
nodeList.jsには、属性を設定および取得し、要素固有の方法を呼び出し、ノデリストのノードへのアクセスを含む特別な方法が含まれています。
prevObject
owner
nodeList.jsは、特定のバージョン(Firefox 6、Safari 5.0.5、Chrome 6、IE 9、Opera 11.6)の後に主流のブラウザと互換性があり、ブラウザーによって追加された新しいメソッド/プロパティが含まれるように自動的に更新されます。 -
p.tip { バックグラウンドカラー:RGBA(128,128,128,0.05); Border-Top-Right-Radius:5px; 国境圏 - 右とradius:5px; パディング:15px 20px; 国境左:10pxソリッドRGBA(128,128,128,075); }
近年、jQueryはWeb上の事実上のJavaScriptライブラリになりました。多くのクロスブラウザーの矛盾を削除し、クライアントスクリプトに人気のある構文砂糖の層を追加します。抽象化処理の主な問題の1つはDOM操作ですが、jQueryの出現以来、ネイティブブラウザーAPIが大幅に改善されており、「おそらくJqueryを必要としない」という概念が人気がありました。
理由は次のとおりです
jQueryには、必要または使用していない多くの機能が含まれています(したがって、巨大であることは不要です)。
- jQueryは、あまりにも多くの人々のためにあまりにも多くの機能を担当します。一般に、小さなライブラリはいくつかのタスクをより良く実行できます。
- dom操作の観点から、ブラウザAPIはjQueryのほとんどの関数を実行できるようになりました。
- ブラウザAPIは、たとえば
- の代わりに を使用するなど、より同期しています。
-
addEventListener
attachEvent
問題は何ですか?
まず、MDNのノデリストの定義を見てみましょう:
NodeListオブジェクトは、ノードのコレクションであり、
メソッドおよび
メソッドによって返されるものです。
Node.childNodes
ダイナミクスノデリストが時々あります(混乱する可能性があります):document.querySelectorAll
は動的です。
これは、動的で静的なものがわからないため、問題になる可能性があります。 NodeListから各ノードを削除し、ノデリストが空であるかどうかを確認しない限り。空の場合、動的なノデリストがあります(それはただの悪い考えです)。 Node.childNodes
さらに、ブラウザは、これらのノデリストオブジェクトを操作するための有用な方法を提供しません。
たとえば、残念ながら、
を使用してノードをループすることはできません。
したがって、forEach
次のことを行う必要があります
var nodes = document.querySelectorAll('div'); nodes.forEach(function(node) { // do something }); // 错误:nodes.forEach 不是函数または「ハック」のみを使用することさえあります:
var nodes = document.querySelectorAll('div'); for(var i = 0, l = nodes.length; i < l; i++) { // do something with nodes[i] }ブラウザのネイティブノデリストには、1つの方法しかありません。 Indexを介してNodeListからノードを返します。アレイを使用するようにノードにアクセスできる場合(
を使用)、それは完全に役に立たない:
[].forEach.call(document.querySelectorAll('div'), function(node) { // do something });
これは、nodelist.jsが登場する場所です。JQUERYを使用してブラウザネイティブAPIを使用してDOMを簡単に操作できますが、4K圧縮サイズのみが必要です。 item
array[index]
var nodes = document.querySelectorAll('div'); nodes.item(0) === nodes[0]; // true
Nodelist.jsを作成しました。なぜなら、ネイティブDom APIを使用しているが、それらをより簡潔にしたいので、コードを作成するときに多くの冗長性を減らします(ループなど)。
nodeList.jsは、単一のノードであるかのようにノードの配列(つまり、ノデリスト)を操作できるネイティブDom APIのラッパーです。これにより、ブラウザのネイティブNodeListオブジェクトよりも多くの機能が得られます。
これが良いと思われる場合は、公式のGithubリポジトリからnodelist.jsのコピーを入手し、このチュートリアルの残りの部分を読み続けてください。
使用法:
domノードの選択は簡単です:
//ノデリストに戻ります
この方法は、バックグラウンドで使用されています
。$$(selector);
しかし、jqueryと比較してどうですか?
この質問をしてくれてうれしいです。ネイティブJS、jQuery、およびnodelist.jsを比較しましょう。 querySelectorAll(selector)
各ボタンのテキストを「私をクリックする」に変更しましょう。
ネイティブjs:
jquery:
var buttons = document.querySelectorAll('button'); // 返回浏览器无用的 NodeList for(var i = 0, l = buttons.length; i < l; i++) { buttons[i].textContent = 'Click Me'; }
nodelist.js:
$('button').text('Click Me');
ここでは、nodeList.jsがノデリストを単一のノードとして効果的に扱うことができることがわかります。つまり、ノデリストを参照して、
プロパティを「クリックして」に設定します。 NodeList.jsは、NodeListの各ノードに対してこれを実行します。とても賢いですよね?
メソッドチェーン(jQueryと同様)が必要な場合は、次のことを行います。これは、ノデリストへの参照を返します。$$('button').textContent = 'Click Me';
さあ、各ボタンにクリックイベントリスナーを追加しましょう:textContent
$$('button').set('textContent', 'Click Me');
jquery:
nodelist.js:
var buttons = document.querySelectorAll('button'); // 返回浏览器无用的 NodeList for(var i = 0, l = buttons.length; i < l; i++) { buttons[i].addEventListener('click', function() { this.classList.add('clicked'); }); }
さて、jqueryの
$('button').on('click', function() { $(this).addClass('click'); // 或将 jQuery 与原生混合使用 `classList`: this.classList.add('clicked'); });方法はかなり良いです。私のライブラリはブラウザのネイティブDOM API(したがって
)を使用していますが、それは私たちがこの方法のエイリアスを作成することを妨げません:
$$('button').addEventListener('click', function() { this.classList.add('clicked'); });
悪くない!これは、独自の方法を追加する方法を示しています
var nodes = document.querySelectorAll('div'); nodes.forEach(function(node) { // do something }); // 错误:nodes.forEach 不是函数
nodeList.jsアレイメソッドのサポート
nodeList.jsはArray.prototype
から継承しますが、直接ではありません。いくつかの方法が変更されているため、ノデリスト(ノードの配列)でそれらを使用することは理にかなっています。
push
およびunshift
およびpush
メソッドはパラメーターとしてノードのみをとることができます。そうしないと、エラーがスローされます。
unshift
var nodes = document.querySelectorAll('div'); for(var i = 0, l = nodes.length; i < l; i++) { // do something with nodes[i] }または
これら2つのメソッドは、JavaScriptのネイティブ配列メソッドのように、ノデリストを変更します。 push
unshift
Array#push
Array#unshift
length
は再帰的な方法なので、これらの配列は私たちが望むほど深く、平らになる可能性があります。ただし、通過した配列の要素がノード、ノデリスト、またはhtmlCollectionでない場合、エラーが発生します。 concat
javascriptのconcat
メソッドと同様に、新しいノデリストを返します。
[].forEach.call(document.querySelectorAll('div'), function(node) { // do something });
、concat
、
、concat
、Array#concat
、
pop
およびshiftメソッドの両方がオプションのパラメーターを使用して、ノードリストからポップまたはシフトするノードの数を示します。 JavaScriptのネイティブmap
またはslice
とは異なり、後者は常にパラメーターとして渡されるものに関係なく、常に配列内の要素をポップアップ表示またはシフトします。 filter
マッピングされた各値がノードである場合、メソッドはノーデリストを返します。 map
またはslice
とは異なり、後者は常にパラメーターとして渡されるものに関係なく、常に配列内の要素をポップアップ表示またはシフトします。 filter
pop
shift
およびArray#pop
メソッドは、実際の配列で行うのと同じことを行いますが、ノデリストを返します。 Array#shift
から直接継承しないため、nodeList.jsをロードするときにmap
にメソッドを追加すると、継承されません。
ここで、Nodelist.jsの残りの配列メソッドを表示できます。 slice
filter
特別な方法
nodeList.jsには、4つの一意の方法と、Array.prototype
と呼ばれるプロパティがあります。 Array.prototype
メソッド:
owner
いくつかの要素には、そのタイプの要素に固有の属性があります(たとえば、アンカータグのprevObject
属性)。これが、
メソッドを使用する方法です。
var nodes = document.querySelectorAll('div'); nodes.forEach(function(node) { // do something }); // 错误:nodes.forEach 不是函数
set
メソッドを使用して、各要素のこれらのプロパティを設定できます。
var nodes = document.querySelectorAll('div'); for(var i = 0, l = nodes.length; i < l; i++) { // do something with nodes[i] }
ノデリストを返して、メソッドチェーンを許可します。 set
などで使用できます(両方とも同等):textContent
[].forEach.call(document.querySelectorAll('div'), function(node) { // do something });1回の呼び出しに複数のプロパティを設定することもできます。
上記のすべての操作は、任意の属性を使用して実行できます。
var nodes = document.querySelectorAll('div'); nodes.item(0) === nodes[0]; // true
style
var buttons = document.querySelectorAll('button'); // 返回浏览器无用的 NodeList for(var i = 0, l = buttons.length; i < l; i++) { buttons[i].textContent = 'Click Me'; }
call
メソッドでは、要素固有のメソッドを呼び出すことができます(たとえば、ビデオ要素で
):
call
pause
$('button').text('Click Me');
item
メソッドは、jQueryの
メソッドに相当します。インデックスを通過するノードのみを含むノデリストを返します:
item
eq
$$('button').textContent = 'Click Me';
owner
属性は、jqueryの
に相当します。
owner
prevObject
スタイルアレイを返し、
$$('button').set('textContent', 'Click Me');
nodeList.js互換性btns.style
owner
私のライブラリは、以下に説明するように、すべての主要な新しいブラウザと互換性があります。 style
バージョン
6
firefox
ノデリストとHTMLCollectionの違いは何ですか?
ノデリストとhtmlCollectionはどちらもノードコレクションです。それらの主な違いは、ノデリストが任意のノードタイプを含めることができることですが、HTMLCollectionは要素ノードのコレクションです。 HTMLCollectionも動的です。つまり、ドキュメント構造が変更されると自動的に更新されます。一方、NodeListは静的であり、ドキュメントの変更を反映するために更新しません。
ノデリストを配列に変換する方法は?
メソッドまたは拡張演算子を使用して、ノデリストをアレイに変換できます。それを行う方法は次のとおりですvar nodes = document.querySelectorAll('div'); nodes.forEach(function(node) { // do something }); // 错误:nodes.forEach 不是函数
jQueryセレクターは、通常の要素ではなくprevobjectを返すのはなぜですか?
JQueryのチェーンメカニズムは、変更を加える前に以前のオブジェクトを保存することにより機能します。これにより、.end()
メソッドを使用して以前の状態に復元できます。実際のDOM要素を取得したい場合は、.get()
メソッドまたは配列表記を使用できます。
ノデリストをループする方法は?
for loop、for ... of loop、またはforEach()
メソッドを使用して、ノデリストをループすることができます。以下は、forループを使用した例です:
var nodes = document.querySelectorAll('div'); for(var i = 0, l = nodes.length; i < l; i++) { // do something with nodes[i] }
jQueryでの.prev()メソッドの使用は何ですか?
jQueryの.prev()
メソッドは、前の兄弟のすぐ隣の選択した要素を選択するために使用されます。セレクターが提供されている場合、以前の兄弟要素は、セレクターが一致している場合にのみ取得されます。
jQueryは2022年にまだ関連していますか?
jQueryは発売時のゲームチェンジャーでしたが、最新のJavaScriptエコシステムは大幅に変化しました。 JQueryを人気にする機能の多くは、JavaScript自体に組み込まれています。ただし、JQueryは依然として広く使用され、維持されており、一部のプロジェクトには適した選択かもしれません。
ノデリストから特定のノードを選択する方法は?
配列表記またはitem()
メソッドを使用して、NodeListから特定のノードを選択できます。それを行う方法は次のとおりです
[].forEach.call(document.querySelectorAll('div'), function(node) { // do something });ノデリストのメソッドを使用、フィルター、および削減できますか?
ノデリストは配列ではないため、マップ、フィルター、削減などのメソッドはありません。ただし、ノデリストを配列に変換してから、これらのメソッドを使用できます。
QuerySelectorとQuerySelectorallの違いは何ですか?
指定されたCSSセレクターに一致するドキュメントの最初の要素を返し、querySelector
はCSSセレクターに一致するすべての要素のノデリストを返します。 querySelectorAll
プロパティをチェックして、Nodelistが空であるかどうかを確認できます。長さが0の場合、ノデリストは空です。それを行う方法は次のとおりです
length
以上がjQueryの膨満感を失いますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









