要素取得する
セレクタで指定したid・classの要素を取得してみましょう。
これがないと始まりませんね。
要素を一つだけ取得する
以前は、idがgetElementById
で、classはgetElementsByClassName
を使用していましたが、最近はquerySelector
が主流です。
CSSのセレクタのように要素名を指定するか、.
でclass、#
でidを取得できます。
JavaScript
- // 要素名で取得
- document.querySelector('div');
- // classを取得
- document.querySelector('.example');
- // idを取得
- document.querySelector('#example');
複数の要素を取得する
複数の要素を取得する場合はquerySelectorAll
を使用します。
idは一つの要素しかないので、要素名かclass名を指定します。
JavaScript
- document.querySelectorAll('.example')
jQueryの場合
jQueryは$
で取得します。
基本的には複数の要素が選択されるので、一つだけ選択したい場合はセレクタで:first
を指定します。
jQuery
- // 要素名で取得
- $('div');
- // classを取得
- $('.example');
- // idを取得
- $('#example');
イベント処理
JavaScriptは要素をクリックした時や、マウスオーバーした時など、何らかの操作行った時に実行させるということが多いですね。
イベントの処理はaddEventListener
を使用します。
addEventListener
は第一引数にイベント名、第二引数にイベントが実行された時の処理を記述します。
クリックイベント
btn
クラスをクリックした時実行するということをやってみます。
addEventListener
の第一引数にclick
を指定します。
JavaScript
- var btn = document.querySelector('.btn');
- btn.addEventListener('click', function() {
- console.log('クリック');
- });
モダンブラウザ(IE以外)では下記のようにアロー関数を使用して、少しだけ短く書くことができます。
thisの扱いが変わってたりと機能もまったく同じではないですが。
JavaScript
- const btn = document.querySelector('.btn');
- btn.addEventListener('click', () => {
- console.log('クリック');
- });
以後はこちらの書き方に統一していきます。
マウスオーバー/マウスアウトイベント
マウスオーバー/アウトは比較的使用頻度が高いイベントですね。
click
の部分をmouseenter/mouseleave
に変更すると動作します。
JavaScript
- const btn = document.querySelector('.btn');
- btn.addEventListener('mouseenter', (e) => {
- console.log('マウスオーバー');
- });
- btn.addEventListener('mouseleave', (e) => {
- console.log('マウスアウト');
- });
mouseover/mouseout
というイベントもありますが、こちらは親要素にもイベントリスナーを設定していた場合、子のイベントが実行されたとき親のイベントも実行されます。
複数の要素の場合
querySelectorAll
を使用して複数の要素を取得している場合、取得できるのは要素ではなくNodeList
になるので、forEach
等でループして一つ一つ登録します。
JavaScript
- const btns = document.querySelectorAll('.btn');
- btns.forEach((btn) => {
- btn.addEventListener('click', () => {
- console.log(index);
- });
- });
jQueryの場合
jQueryの場合は一つでも複数の要素でも書き方は同じですね。
jQuery
- // クリックイベント
- $('.btn').on('click', function() {
- console.log('クリック');
- });
- // オーベー/アウトイベント
- $('.btn').mouseenter(function() {
- console.log('マウスオーバー');
- }).mouseleave(function() {
- console.log('マウスアウト');
- });
クラスの追加・削除
最近はCSSで結構なことができるようになってきたので、JavaScriptでクラスのコントロールをするだけで色々とできるようになりますね。
クラスを操作するにはclassList
を使用します。
下記メソッドがあります。
add | クラスの追加 |
---|---|
remove | クラスの削除 |
toggle | クラスの切り替え |
contains | クラスが指定されているか |
btn
クラスの要素をクリックする度に、active
クラスの追加・削除を切り替えるということをやってみます。
JavaScript
- const btn = document.querySelector('.btn');
- btn.addEventListener('click', (e) => {
- e.target.classList.toggle('active');
- });
jQueryの場合
jQueryの場合はtoggleClass
を使用します。
JavaScript
- $('.btn').on('click', function() {
- $(this).toggleClass('active')
- });
jQueryを使用することのデメリットはあるのでしょうが、DOM操作用途ならjQuery使った方がわかりやすい気がしてます。
JavaScript コードレシピ集