ホームページ > ウェブフロントエンド > jsチュートリアル > バニラ JavaScript で DOM 操作をマスターする: それが依然として重要な理由

バニラ JavaScript で DOM 操作をマスターする: それが依然として重要な理由

Susan Sarandon
リリース: 2024-11-06 15:16:02
オリジナル
1121 人が閲覧しました

Mastering DOM Manipulation in Vanilla JavaScript: Why It Still Matters

React、Vue、Angular などのフレームワークやライブラリがあふれる世界では、バニラ JavaScript で DOM 操作をマスターすることの重要性が見落とされがちです。しかし、ドキュメント オブジェクト モデル (DOM) の基本と、それを直接操作する方法を理解することは、依然として非常に価値があります。このガイドでは、DOM 操作の基本、主要なメソッド、および非常に多くのフレームワークがあるにもかかわらず知っておく価値がある理由を説明します。

はじめに: DOM の操作は家具の並べ替えに似ています

Web ページが部屋であり、それぞれの要素が家具であると想像してください。 DOM 操作 は家具を再配置するようなもので、レイアウトを直接変更したり、物を移動したり、新しい要素を追加したり、削除したりすることもあります。これらの変更をマスターすることは、Web ページがどのように構築され、ユーザーに表示されるかを理解するために不可欠です。

フレームワークはこれらの変更を処理できますが、DOM を自分で操作する方法を知っていれば、より詳細に制御でき、舞台裏でどのように動作するかをより深く理解できるようになります。

DOM 操作の一般的な方法

getElementById、querySelector など

JavaScript には、DOM と対話するためのさまざまな組み込みメソッドが用意されています。最も一般的に使用されるものをいくつか取り上げ、それらがどのように機能するかを見てみましょう。

1.getElementById

DOM 内の要素を選択する最も簡単な方法は、その ID を使用することです。このメソッドは、指定された ID を持つ最初の要素を返します。

const element = document.getElementById('myElement');
element.style.color = 'blue'; // Changes the text color to blue
element.textContent = 'Hello, world!'; // Updates the text content
ログイン後にコピー
ログイン後にコピー

2. querySelector と querySelectorAll

これらのメソッドでは、CSS セレクターを使用して要素を選択できます。 querySelector はセレクターに一致する最初の要素を返しますが、querySelectorAll は一致するすべての要素の NodeList を返します。

const singleElement = document.querySelector('.myClass'); // Selects first element with myClass
singleElement.style.fontSize = '20px'; // Changes font size

const multipleElements = document.querySelectorAll('.myClass'); // Selects all elements with myClass
multipleElements.forEach(element => {
  element.style.backgroundColor = 'lightgray'; // Sets background color for each element
});
ログイン後にコピー
ログイン後にコピー

3.createElement、appendChild、insertBefore

ページに新しい要素を追加するには、createElement を使用して新しい DOM 要素を作成し、appendChild を使用してそれを既存の要素に追加します。 insertBefore を使用して、特定の位置に要素を追加することもできます。

const newElement = document.createElement('p');
newElement.textContent = 'This is a new paragraph!';
document.body.appendChild(newElement); // Adds the new paragraph at the end of body

// Inserting an element before another
const container = document.getElementById('container');
const newDiv = document.createElement('div');
newDiv.textContent = 'Inserted before existing content';
container.insertBefore(newDiv, container.firstChild); // Inserts newDiv before the first child
ログイン後にコピー
ログイン後にコピー

4.removeChildと削除

要素を削除するには、親要素への参照がある場合はremoveChildを使用するか、要素に対して直接removeメソッドを使用します。

// Using removeChild
const parent = document.getElementById('parentElement');
const child = document.getElementById('childElement');
parent.removeChild(child); // Removes childElement from parentElement

// Using remove directly
const elementToRemove = document.getElementById('removeMe');
elementToRemove.remove(); // Removes the element directly
ログイン後にコピー
ログイン後にコピー

5. 属性の変更

setAttribute、getAttribute、removeAttribute などのメソッドを使用して属性を操作することもできます。

const link = document.querySelector('a');
link.setAttribute('href', 'https://www.example.com'); // Sets the href attribute
link.setAttribute('target', '_blank'); // Opens link in a new tab
console.log(link.getAttribute('href')); // Retrieves the href attribute
link.removeAttribute('target'); // Removes the target attribute
ログイン後にコピー

6. スタイルを直接変更する

要素の CSS スタイルを変更するには、style プロパティを使用できます。

const element = document.getElementById('myElement');
element.style.color = 'blue'; // Changes the text color to blue
element.textContent = 'Hello, world!'; // Updates the text content
ログイン後にコピー
ログイン後にコピー

7. イベントリスナーの追加

イベント リスナーは、要素がユーザーのアクションに応答できるようにすることで、ページをインタラクティブにします。

const singleElement = document.querySelector('.myClass'); // Selects first element with myClass
singleElement.style.fontSize = '20px'; // Changes font size

const multipleElements = document.querySelectorAll('.myClass'); // Selects all elements with myClass
multipleElements.forEach(element => {
  element.style.backgroundColor = 'lightgray'; // Sets background color for each element
});
ログイン後にコピー
ログイン後にコピー

DOM 操作を使用する場合

バニラ DOM 操作が威力を発揮する実践的なシナリオ

フレームワークは面倒な作業のほとんどを処理しますが、バニラの DOM 操作の方が簡単で効率的な場合もあります。

  • 小規模プロジェクト: 単純なページまたは小規模プロジェクトの場合、多くの場合、バニラ JavaScript を使用した方が、フレームワーク全体を読み込むよりも高速で軽量です。
  • 学習と実験: DOM 操作をマスターすると、Web がどのように機能するかを理解するのに役立ち、後でフレームワークを学習するための基礎が得られます。
  • パフォーマンスの最適化: DOM の直接操作は、特に特定の 1 回限りの変更の場合、フレームワーク主導の更新よりも高速な場合があります。

: テキストを表示または非表示にする 1 つのボタンがあるとします。このような単純なタスクでは、バニラ JavaScript の方が効率的です。

const newElement = document.createElement('p');
newElement.textContent = 'This is a new paragraph!';
document.body.appendChild(newElement); // Adds the new paragraph at the end of body

// Inserting an element before another
const container = document.getElementById('container');
const newDiv = document.createElement('div');
newDiv.textContent = 'Inserted before existing content';
container.insertBefore(newDiv, container.firstChild); // Inserts newDiv before the first child
ログイン後にコピー
ログイン後にコピー

フレームワークを使用すると、状態を設定してロジックを再レンダリングする必要がありますが、これはこのような小さなタスクには過剰です。

代替案: React、Vue、そして Vanilla が依然として存在する理由

フレームワークとバニラ JavaScript

React、Vue、Angular などのフレームワークは、更新や状態の変更を処理することで DOM の操作を容易にします。 仮想 DOM を使用してプロセスをより効率的に管理し、変更する必要があるものだけを更新します。

しかし問題は、フレームワークにはオーバーヘッドが伴うということです。小規模なプロジェクトを構築している場合、その余分な重量には価値がないかもしれません。また、通常の DOM 操作を理解すると、主にフレームワークを使用する場合でも、より優れた開発者になります。内部で何が起こっているかを知ることは、トラブルシューティング、最適化、情報に基づいた意思決定に役立ちます。

: 要素にツールヒントを追加したいと想像してください。バニラ JavaScript でそれを行う方法は次のとおりです:

// Using removeChild
const parent = document.getElementById('parentElement');
const child = document.getElementById('childElement');
parent.removeChild(child); // Removes childElement from parentElement

// Using remove directly
const elementToRemove = document.getElementById('removeMe');
elementToRemove.remove(); // Removes the element directly
ログイン後にコピー
ログイン後にコピー

バニラ JavaScript を使用すると、フレームワークに依存せずにツールヒントの位置と動作を正確に制御できます。

結論: 理解を深めるために基本に立ち返る

バニラ JavaScript で DOM 操作をマスターすることは、派手なガジェットを使用する前に料理の基本を学ぶことに似ています。それは強固な基盤を与え、より多用途にし、フレームワークが何をするのかを理解するのに役立ちます。フレームワークにより DOM の操作が容易になりますが、DOM を直接操作する方法を知っていることは、小規模プロジェクトのデバッグ、最適化、構築に非常に役立ちます。

それで、次にフレームワークに手を伸ばしたくなったら、バニラ JavaScript を試してみてください。それがいかに強力でシンプルであるかに驚かれるかもしれません。


DOM 操作を実際に試す準備はできましたか? 次のプロジェクトでこれらのテクニックを試して、バニラの JavaScript だけでどれだけのことを達成できるか試してください!


この記事が気に入っていただけた場合は、私の仕事をサポートすることを検討してください:

  • コーヒーを買ってきてください
  • メンターシップやキャリアに関するアドバイスの電話を予約する
  • Twitter でフォローしてください
  • LinkedIn でつながる

以上がバニラ JavaScript で DOM 操作をマスターする: それが依然として重要な理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート