【JavaScript】よく使うDOM操作について厳選してまとめました
2023年1月29日
DOMとはDocument Object Modelの略で、HTML や XML 文書を取り扱うための API です。
DOMを操作することによってHTMLの要素を取得して動きを加えることができます。
この記事では、よく使うDOM操作についてまとめました。
getElementById
getElementByIdを使うことで、特定のIDが付与されている要素を取得することができます。
document.getElementById('banner')
//HTMLのID属性でbannerと指定されている要素を取得します
()の中に存在しないIDを指定した場合、NULLを返します。
getElementsByTagName
getElementsByTagNameは一致する全てのタグ要素を取得します。
const allImages = document.getElementsByTagName('img')
//imgタグで囲まれている全ての要素を取得します
querySelectorとquerySelectorAll
querySelectorを使用すると「タグ」「クラス」「ID」を取得することができます。
現在は、getElementByIdやgetElementsByTagNameの使い分けをしなくてよいです。
querySelectorで全ての要素(タグ、クラス、ID)を要素を取得できるので、基本的に要素を取得するときはquerySelectorを使用します。
document.querySelector('img')
document.querySelector('img:nth-of-type(2)')
//imgタグの要素を取得します
//Allを付けない場合、最初に見つかった値が返されます
document.querySelector('.container')
//containerクラスを取得します
document.querySelector('#container')
//containerIDを取得します
document.querySelector('a[title="まりも"]')
//aタグのtitleがまりもに指定されている要素を取得します
また指定した要素を全てを取得したい場合には、querySelectorAllを使用します。
querySelectorAllを使用して特定の要素を取得することもできます。
document.querySelectorAll('a')[1]
//aタグの2個目(インデックスで1個目)の要素を取ることもできます。
innnerTextとtextContent
]innnerTextでテキストの内容を取得することができます。
ページ上で表示されている要素のみが取得されます。
textContentでは、HTMLで書かれた改行などの要素も併せて取得できます。
CSSのdisplay:none;などで隠されている要素をも全て取得されます。
詳細はこちら
innerHTML
innerHTMLは要素内のHTMLまたはXMLのマークアップを取得をします。
document.querySelector('h1').innnerHTML = '<i>AAA<i>'
//querySelectorでh1の要素を取得して、AAAの斜体文字にしています。
HTML要素の中身を書き換えるときに使用します。
styleプロパティ
styleプロパティを使うことで、CSSのスタイルをJavaScriptで操作することができます。
ただしインライン要素でスタイルが追加されるので注意が必要です。
const h1 = document.querySelector('h1')
h1.style.color = 'green'
h1.style.fontsize= '3em'
h1.style.border= '2px solid blue'
//style.CSSのプロパティのようにして追加します
「インライン要素で追加する=CSSファイルで設定したスタイルより優先される」ということになります。
また、styleプロパティはキャメルケースで記述します。
※キャメルケースとは、ハイフンなどを使わずに、文字のつなぎ目を大文字にする記法のこと
classList
classListを使うと、クラス属性を操作することができます。
add、remove、toggleをよく使います。
const h1 = document.querySelector('h1')
h1.classList.add('pink')
//h1にpinkクラスを割り当てることができます。
h1.classList.add('blue')
//pinkクラスが適用されたうえで、更にblueクラスを追加することもできます。
h1.classList.remove('pink')
//pinkクラスを外すこともできます
h1.classList.toggle('pink')
//toggleを使うことで、「pinkクラス付与」⇒[pinkクラス取り外し」が容易にできます
toggleは今の状態から別の状態に切り替えるときに使用します。
parentElement
指定した要素の親要素を取得します。
<div id="test">
<div id="parent">
<div id="child"></div>
</div>
</div>
const child = document.getElementById("child");
console.log(child.parentElement);
//HTML内で指定しているchildの親要素、parentを取得します。
子要素から見て親要素は複数存在する場合があります。
その場合、複数の子要素から同じ親要素を取得することができます。
children
指定した要素の子要素を取得します。
<div id="parent">
<div id="child1"></div>
<div id="child2"></div>
<div id="child3"></div>
</div>
const parent = document.getElementById("parent");
console.log(parent.child);
//HTML内で指定しているparentの子要素、child1~3を取得します。
HTMLに登場した順番で取得できます。
createElement()
要素を新しく追加するときに使用します。
const image = document.createElement('img')
//imgタグを新しく作ります。
image.src= 'https://〇〇〇'
//作成したimageにsrcを挿入して画像を設定します。
append()
appendを使用することで、テキスト要素などを追加できます。
const p = document.querySelector('p')
p.append('あいうえお')
//pタグにあいうえおと追加できます
before()とafter()
ある要素の前、もしくは後ろに要素を追加することができます。
img.before('h2')
//img要素の前にh2を追加します。
h1.after('h2')
//h1要素の後ろにh2を追加します。
remove()
remove()を使うことで、自分自身の要素を削除することができます。
const img = document.querySelector('img')
img.remove()
簡単に要素を削除できます。