TypeScriptにおけるDOM操作
この記事ではTypeScriptにおけるDOM操作について説明します。
DOM要素の操作と、要素の追加や削除などDOMツリーの操作方法をコードを通して学べます。
YouTube Video
TypeScriptにおけるDOM操作
TypeScriptでのDOM操作は、JavaScriptと同様に行えますが、TypeScriptでは型チェックがあるため、より安全に操作できます。DOM(Document Object Model)は、HTMLやXML文書をプログラムで操作するためのオブジェクトモデルで、ブラウザ上で表示されているページにアクセスしたり、要素を追加・削除したり、スタイルを変更したりできます。
TypeScriptを使ってDOMを操作する基本的な手法について紹介します。
DOM要素の取得
document
オブジェクトを使って、HTML要素を取得します。以下のメソッドがよく使われます。
document.getElementById
document.getElementById
は、指定したID属性を持つ要素を取得します。
1// Type is HTMLElement | null
2const element = document.getElementById('myElement');
3if (element) {
4 console.log(element.innerHTML);
5}
document.getElementById
は、指定したIDを持つ要素を取得し、存在する場合にその内容へアクセスできます。
document.querySelector
document.querySelector
は、CSSセレクタに一致する最初の要素を取得します。
1// Type is Element | null
2const element = document.querySelector('.myClass');
3if (element) {
4 console.log(element.textContent);
5}
document.querySelector
は、指定したCSSセレクタに一致する最初の要素を取得し、存在する場合にその内容へアクセスできます。
document.querySelectorAll
document.querySelectorAll
は、CSSセレクタに一致するすべての要素を取得します。
1// Type is NodeListOf<HTMLDivElement>
2const elements = document.querySelectorAll('div');
3elements.forEach((el) => console.log(el.innerHTML));
document.querySelectorAll
は、指定したCSSセレクタに一致するすべての要素を取得し、反復処理で内容へアクセスできます。
要素の型アサーション
TypeScriptでは、要素の型を明示的にアサーションすることで、より特定のメソッドやプロパティを利用できるようになります。
1const inputElement = document.getElementById('myInput') as HTMLInputElement;
2if (inputElement) {
3 console.log(inputElement.value); // Access the value property of the input element
4}
as
はTypeScriptにおける型アサーション演算子で、コンパイラに「この値を特定の型として扱う」と明示的に指示するために使われます。- TypeScriptでは、型アサーションを使うことで取得した要素を特定の型として扱い、その型固有のプロパティやメソッドにアクセスできます。
DOMの操作
DOMの操作は、要素が持つプロパティを通じて行われます。これにより、テキストや属性の変更、スタイルの適用、表示内容の更新などを柔軟に制御できます。
-
要素のテキストを変更する
要素の
textContent
やinnerHTML
を使って、その要素のテキストやHTMLを変更できます。
1const element = document.getElementById('myElement');
2if (element) {
3 element.textContent = 'New Text'; // Set the text content to 'New Text'
4}
- 要素の
textContent
やinnerHTML
を使うことで、その要素の表示テキストやHTML内容を変更できます。
-
要素のスタイルを変更する
要素の
style
プロパティを使って、インラインスタイルを変更できます。
1const element = document.getElementById('myElement');
2if (element) {
3 element.style.color = 'blue';
4 element.style.fontSize = '20px';
5}
- このコードは、特定の要素を取得して文字色を青にし、フォントサイズを20pxに変更しています。
-
要素の属性を変更する
要素の属性を変更したい場合は、
setAttribute
を使います。
1const link = document.querySelector('a');
2if (link) {
3 link.setAttribute('href', 'https://example.com');
4}
- このコードは、ページ内の最初のリンク要素の
href
属性をhttps://example.com
に変更しています。
-
要素のクラスを操作する
要素のクラスを追加・削除する場合は、
classList
を使用します。
1const element = document.getElementById('myElement');
2if (element) {
3 element.classList.add('active');
4 element.classList.remove('inactive');
5}
- このコードは、特定の要素に
active
クラスを追加し、inactive
クラスを削除しています。
DOM要素の追加・削除
要素を新たに追加したり、既存の要素を削除したりすることもできます。これにより、ユーザーの操作やアプリの状態に応じて、ページ構造を動的に変化させることが可能です。
-
新しい要素の作成と追加
document.createElement
を使って新しい要素を作成し、それをDOMに追加します。
1const newDiv = document.createElement('div');
2newDiv.textContent = 'New Element'; // Set the text content to 'New Element'
3document.body.appendChild(newDiv); // Add the new element to the body
- このコードは、新しい
<div>
要素を作成してテキストを設定し、ページの<body>
に追加しています。
-
要素の削除
要素を削除するには、
removeChild
やremove
メソッドを使います。
1const parentElement = document.getElementById('parentElement');
2const childElement = document.getElementById('childElement');
3if (parentElement && childElement) {
4 parentElement.removeChild(childElement); // Remove the child element
5}
6
7// Alternatively
8const element = document.getElementById('myElement');
9if (element) {
10 element.remove(); // Remove the element itself
11}
- このコードは、特定の子要素を親から削除する方法と、要素自身を直接削除する方法を示しています。
イベントの追加
TypeScriptでは、要素にイベントリスナーを追加することで、ユーザーの操作に応じて処理を実行できます。
1const button = document.getElementById('myButton');
2if (button) {
3 button.addEventListener('click', () => {
4 console.log('Button was clicked'); // Log when the button is clicked
5 });
6}
- このコードは、ボタンがクリックされたときにコンソールにメッセージを表示するイベントリスナーを追加しています。
addEventListener
を使うと、クリック、マウス移動、キーボード入力など、さまざまなイベントを監視して処理を実行できます。
TypeScriptでのDOM操作のポイント
TypeScriptでDOM操作を行うときは、要素の型定義や null
チェックなどに注意すると、エラーを防ぎ堅牢なコードを記述できます。
-
nullチェック
DOM要素が存在しない可能性があるため、TypeScriptでは要素を操作する前にnullチェックを行うことが推奨されます。
-
型の明示的なアサーション
特定の要素(例えば、
HTMLInputElement
)を操作する場合は、アサーション(as
)を使って型を指定し、その要素固有のプロパティ(value
など)を利用するのが一般的です。
これらを踏まえると、TypeScriptを使ったDOM操作は、JavaScriptの自由さとTypeScriptの型安全性を活かして、より安全で予測可能なコードを書くことができます。
YouTubeチャンネルでは、Visual Studio Codeを用いて上記の記事を見ながら確認できます。 ぜひYouTubeチャンネルもご覧ください。