createElement()
は、JavaScriptで新しいHTML要素を作成するためのメソッドです。動的に要素を追加したい場合によく使用されます。今回は、createElement()
の基本的な使い方から注意点までをまとめていきたいと思います。
document.createElement(tagName);
tagName
:作成する要素のタグ名(例:div
,p
,button
など)- 戻り値:指定したタグの新しい要素(
HTMLElement
オブジェクト)
このメソッドで作成した要素は、初期状態ではDOMに追加されません。追加するには、appendChild()
などのメソッドを使用します。
See the Pen Untitled by tones (@tonescodedesign) on CodePen.
// 1. 新しい p 要素を作成
const newParagraph = document.createElement('p');
// 2. テキストを追加
newParagraph.textContent = 'これは新しく追加された段落です。';
// 3. 親要素に追加
document.getElementById('container').appendChild(newParagraph);
<div id="container"></div>
この例では、createElement('p')
を使って <p>
要素を作成し、textContent
でテキストを追加した後、appendChild()
でDOMに追加しています。
See the Pen createElement by tones (@tonescodedesign) on CodePen.
// 1. ボタンを作成
const button = document.createElement('button');
// 2. ボタンのテキストを設定
button.textContent = 'クリックしてね';
// 3. クリック時のイベントを追加
button.addEventListener('click', () => {
alert('ボタンがクリックされました!');
});
// 4. ボタンをDOMに追加
document.getElementById('button-container').appendChild(button);
<div id="button-container"></div>
この例では、ボタンを作成し、クリックイベントを追加した後、DOMに追加しています。
- 動的に要素を追加できる:必要なタイミングで要素を作成・挿入可能
- 再利用可能なコンポーネントを作成しやすい:JavaScriptを用いたテンプレート生成が容易
- イベントリスナーの設定が簡単:作成時に直接イベントを追加できる
createElement()
で作成した要素は、最初はDOMツリーに存在しない ため、appendChild()
などで追加する必要があります。
const newDiv = document.createElement('div');
newDiv.textContent = '追加されないと表示されない!';
// document.body.appendChild(newDiv); をしないと表示されない
要素を作成・追加する方法として innerHTML
を使うことも可能ですが、createElement()
の方が安全でパフォーマンスが良い です。
// innerHTML を使う方法(非推奨)
document.getElementById('container').innerHTML = '<p>直接HTMLを書き込む</p>';
innerHTML
を使用すると、HTMLの解析と再構築が必要になるため、createElement()
に比べて処理が重くなり、パフォーマンスに影響を与えることがあります。
createElement()
で要素を追加する際は、適切なアクセシビリティ対応を行いましょう。
- フォーカス可能な要素を追加する場合は
tabindex
を設定する - スクリーンリーダー対応のために
aria-label
を設定する
const newButton = document.createElement('button');
newButton.textContent = '送信';
newButton.setAttribute('aria-label', '送信ボタン');
newButton.setAttribute('tabindex', '0');
document.body.appendChild(newButton);