標準のdocument、querySelector、querySelectorAllの使い方
jQueryからネイティブの機能へ
jQueryには様々な便利な機能がありましたが、最近では標準の機能でDOMの取り扱いが簡単に行えるようになりました。 ここではネイティブな書き方での各種機能を記載します。
要素の取得、セレクタ
document.querySelectorはマッチする最初の要素、document.querySelectorAllは全ての要素を取得します。
document.querySelectorAllはNodeListを返すので、
配列にしたい場合はArray.from(document.querySelectorAll('*****'))
のようにします。
//IDの名称から要素を取得
document.getElementById('idName');//document.querySelector('#idName')と同様の取得結果
//クラス名から要素を取得
document.getElementsByClassName('className');//document.querySelectorAll('.className')と同様の取得結果
//タグ名称から要素を取得
document.getElementsByTagName('tagName');//document.querySelectorAll('tagName')と同様の取得結果
//CSSセレクタから要素を取得(単数)
document.querySelector('cssSelector');
//CSSセレクタから要素を取得(複数)
document.querySelectorAll('cssSelector');
//属性を指定して要素を取得
document.querySelectorAll('input[type=text]');
//特定の値の属性以外の要素を取得
Array.from(document.querySelectorAll('input')).filter(node => node.getAttribute('type') !== "text");
//直前の要素(前の兄弟要素)
document.getElementById('idName').previousElementSibling;
//直後の要素(次の兄弟要素)
document.getElementById('idName').nextElementSibling;
//親要素
document.getElementById('idName').parentNode;
//子要素
document.getElementById('idName').children;
//祖先要素
document.getElementById('idName').closest('cssSelector');
DOM
document.querySelector('cssSelector').append(target);//指定した要素またはDOM文字列を末尾に追加
document.querySelector('cssSelector').prepend(target);//指定した要素またはDOM文字列を先頭に追加
document.querySelector('cssSelector').after(target);//指定した要素またはDOM文字列を直後に追加
document.querySelector('cssSelector').before(target);//指定した要素またはDOM文字列を直前に追加
document.querySelector('cssSelector').replaceWith(target);//指定した要素またはDOM文字列に置き換え
document.querySelector('cssSelector').removeChild(target);//指定した要素の除去
代表的な要素
document.head;//ヘッダ
document.body;//ボディ
document.forms;//フォーム
document.all;//全要素
HTML、値
document.querySelector('cssSelector').value;//input等の値
document.querySelector('cssSelector').textContent;//テキストの内容
document.querySelector('cssSelector').innerHTML ;//子要素以下のHTML
document.querySelector('cssSelector').outerHTML;//自身と内部のHTML
値属性の値
document.querySelector('cssSelector').getAttribute('type');//属性値の取得
document.querySelector('cssSelector').setAttribute('type','number');//属性値の設定
スタイル
el.style.color = 'red';
クラス
document.querySelector('cssSelector').classList.add('className');//CSSクラスの追加
document.querySelector('cssSelector').classList.remove('className');//CSSクラスの除外
document.querySelector('cssSelector').classList.contains('className');//CSSクラスを含むかの判定
document.querySelector('cssSelector').classList.toggle('className');//CSSクラスのトグル
イベント設定
document.addEventListener('load', function(){ … });//ロード完了時
document.addEventListener('click', function(){ … });//クリック時
document.addEventListener('mousedown', function(){ … });//マウスでボタンが押された時
document.addEventListener('mouseup', function(){ … });//マウスでボタンが離された時
document.addEventListener('contextmenu', function(){ … });//マウス右クリック時
document.addEventListener('dblclick', function(){ … });///マウスダブルクリック時
document.addEventListener('keydown', function(){ … });//キーが押された時
document.addEventListener('keyup', function(){ … });//キーが話された時
document.addEventListener('keypress', function(){ … });//キーが押された状態の時
document.addEventListener('change', function(){ … });//変更時
document.addEventListener('focus', function(){ … });//フォーカス時
document.addEventListener('blur', function(){ … });//フォーカス喪失時
document.addEventListener('scroll', function(){ … });//スクロール時
document.addEventListener('submit', function(){ … });//サブミット時
document.addEventListener('resize', function(){ … });//ドキュメントサイズ変更時
DOM読み込み完了時
document.addEventListener('DOMContentLoaded', function(){ … });
HTTPリクエスト
fetch('https://example.com/path/')
.then(response => response.json() )
.then(data => console.log(data) )
.catch((error) => {console.error('Error:', error);} );