要素取得する

セレクタで指定したid・classの要素を取得してみましょう。
これがないと始まりませんね。

要素を一つだけ取得する

以前は、idがgetElementByIdで、classはgetElementsByClassNameを使用していましたが、最近はquerySelectorが主流です。
CSSのセレクタのように要素名を指定するか、.でclass、#でidを取得できます。

JavaScript

  1. // 要素名で取得
  2. document.querySelector('div');
  3. // classを取得
  4. document.querySelector('.example');
  5. // idを取得
  6. document.querySelector('#example');

複数の要素を取得する

複数の要素を取得する場合はquerySelectorAllを使用します。
idは一つの要素しかないので、要素名かclass名を指定します。

JavaScript

  1. document.querySelectorAll('.example')

jQueryの場合

jQueryは$で取得します。
基本的には複数の要素が選択されるので、一つだけ選択したい場合はセレクタで:firstを指定します。

jQuery

  1. // 要素名で取得
  2. $('div');
  3. // classを取得
  4. $('.example');
  5. // idを取得
  6. $('#example');

イベント処理

JavaScriptは要素をクリックした時や、マウスオーバーした時など、何らかの操作行った時に実行させるということが多いですね。

イベントの処理はaddEventListenerを使用します。
addEventListenerは第一引数にイベント名、第二引数にイベントが実行された時の処理を記述します。

クリックイベント

btnクラスをクリックした時実行するということをやってみます。
addEventListenerの第一引数にclickを指定します。

JavaScript

  1. var btn = document.querySelector('.btn');
  2. btn.addEventListener('click', function() {
  3. console.log('クリック');
  4. });

モダンブラウザ(IE以外)では下記のようにアロー関数を使用して、少しだけ短く書くことができます。
thisの扱いが変わってたりと機能もまったく同じではないですが。

JavaScript

  1. const btn = document.querySelector('.btn');
  2. btn.addEventListener('click', () => {
  3. console.log('クリック');
  4. });

以後はこちらの書き方に統一していきます。

マウスオーバー/マウスアウトイベント

マウスオーバー/アウトは比較的使用頻度が高いイベントですね。
clickの部分をmouseenter/mouseleaveに変更すると動作します。

JavaScript

  1. const btn = document.querySelector('.btn');
  2. btn.addEventListener('mouseenter', (e) => {
  3. console.log('マウスオーバー');
  4. });
  5. btn.addEventListener('mouseleave', (e) => {
  6. console.log('マウスアウト');
  7. });

mouseover/mouseoutというイベントもありますが、こちらは親要素にもイベントリスナーを設定していた場合、子のイベントが実行されたとき親のイベントも実行されます。

複数の要素の場合

querySelectorAllを使用して複数の要素を取得している場合、取得できるのは要素ではなくNodeListになるので、forEach等でループして一つ一つ登録します。

JavaScript

  1. const btns = document.querySelectorAll('.btn');
  2. btns.forEach((btn) => {
  3. btn.addEventListener('click', () => {
  4. console.log(index);
  5. });
  6. });

jQueryの場合

jQueryの場合は一つでも複数の要素でも書き方は同じですね。

jQuery

  1. // クリックイベント
  2. $('.btn').on('click', function() {
  3. console.log('クリック');
  4. });
  5.  
  6. // オーベー/アウトイベント
  7. $('.btn').mouseenter(function() {
  8. console.log('マウスオーバー');
  9. }).mouseleave(function() {
  10. console.log('マウスアウト');
  11. });

クラスの追加・削除

最近はCSSで結構なことができるようになってきたので、JavaScriptでクラスのコントロールをするだけで色々とできるようになりますね。

クラスを操作するにはclassListを使用します。
下記メソッドがあります。

add クラスの追加
remove クラスの削除
toggle クラスの切り替え
contains クラスが指定されているか

btnクラスの要素をクリックする度に、activeクラスの追加・削除を切り替えるということをやってみます。

JavaScript

  1. const btn = document.querySelector('.btn');
  2. btn.addEventListener('click', (e) => {
  3. e.target.classList.toggle('active');
  4. });

jQueryの場合

jQueryの場合はtoggleClassを使用します。

JavaScript

  1. $('.btn').on('click', function() {
  2. $(this).toggleClass('active')
  3. });
以上です。
jQueryを使用することのデメリットはあるのでしょうが、DOM操作用途ならjQuery使った方がわかりやすい気がしてます。

JavaScript コードレシピ集