
こばゆた
今回はJava Scriptを使ってイベントを追加してみます

きなこ
HTMLやCSSで作ったものが動くって感動だね

こばゆた
簡単なイベントでも作れるとようやくJava Scriptが楽しくなってくるからね
目次
1.addEventListener( )
セレクター名.addEventListener('イベントの種類', 関数名);
第1引数にはイベントの種類、第2引数には関数があれば関数名を記入します。

こばゆた
よく使われるイベントは以下の通りです
よく使われるイベント
イベント名 | イベントの起こるタイミング |
---|---|
click | クリックしたとき |
dblclick | ダブルクリックしたとき |
mouseover | カーソルがターゲットに乗ったとき |
mouseout | カーソルがターゲットから降りたとき |
mousemove | カーソルが移動したとき |
mousedown | マウスボタンを押しているとき |
mouseup | 押したマウスボタンが上がったとき |
keypress | キーボードのキーを押しているとき |
keydown | キーを押しているとき |
keyup | キーを離したとき |

こばゆた
その他のイベントはMDNを参照してください

イベントリファレンス | MDN
イベントは、コードの実行に影響を与える可能性のある「興味深い変化」をコードに通知するために発行されます。これは、マウス操作やウィンドウのサイズ変更などのユーザー操作や、環境の変化 (バッテリー残量の低下や OS のメディアイベントなど)、そ...

こばゆた
ここからは実際に作ってみます
1-1.関数を読み込む場合
<p>Hello!</p>
<div id="btn">change</div>
const text = document.querySelector('p'); //p要素を取得して定数"text"へ代入
const btn = document.getElementById('btn'); //id名"btn"を取得して定数"btn"へ代入
function changeText(){
text.textContent = 'Good Bye!';
}
//"text"の文章を'Good Bye!'に変える関数"changeText"を用意
btn.addEventListener('click',changeText);
//クリックすると関数"changeText"が呼び出される
Hello!
change
1-2.アロー関数に含める場合
<p>Hello!</p>
<div id="btn">change</div>
const text = document.querySelector('p'); //p要素を取得して定数"text"へ代入
const btn = document.getElementById('btn'); //id名"btn"を取得して定数"btn"へ代入
btn.addEventListener('click',() =>{
text.textContent = 'Good Bye!';
});
//クリックすると"text"の文章が'Good Bye!'に変わる
Hello!
change

こばゆた
ここからは実際に例を見ていこうと思います
なおここからはアロー関数を使う方法に統一して説明していきます
2.イベント
2-1.click, dblclick
文字通りクリックやダブルクリックがイベントを起こす条件となるものです。
<p id="text">Hello!</p>
<div id="clickBtn">click!</div>
<div id="dblClickBtn">dblclick!</div>
const text = document.getElementById('text'); //id名”text”を取得して定数"text"へ代入
const clickBtn = document.getElementById('clickBtn'); //id名”clickBtn”を取得して定数"clickBtn"に代入
clickBtn.addEventListener('click', () =>{
text.textContent = 'click!';
});
//"clickBtn"をクリックすると"text"のテキストが'click!'に変わる
const dblClickBtn = document.getElementById('dblClickBtn'); //id名”dblClickBtn”を取得し定数dblClickBtnに代入
dblClickBtn.addEventListener('dblclick', () =>{
text.textContent = 'double click!!';
});
//"dblClickBtn"をダブルクリックすると"text"のテキストが'double click!!'に変わる
Hello!
click!
dblclick!
2-2.mouseover, mouseout
mouseoverはカーソルがターゲットに乗ったとき、mouseoutはカーソルがターゲットから降りたときにイベントが発動します。
<div id="box"></div>
const box = document.getElementById('box'); //id名"box"を取得し定数"box"に代入
box.addEventListener('mouseover', () =>{
box.style.backgroundColor = 'red';
});
//"box"にカーソルが乗ったら背景色を赤にする
box.addEventListener('mouseout', () =>{
box.style.backgroundColor = '#ddd';
});
//"box"からカーソルが降りたら背景色を#dddにする
boxの上にカーソルを乗せてください
2-3.mousemove
mousemoveはマウスカーソルが移動している間にイベントが発動します。
<p id="point">枠内のX座標を取得します。</p>
<div id="frame"></div>
const frame = document.getElementById('frame'); //id名"frame"を取得し定数"frame"に代入
const point = document.getElementById('point'); //id名"point"を取得し定数"point"に代入
frame.addEventListener('mousemove', e =>{
point.textContent = `枠内のX座標は${e.offsetX}です`;
});
//"frame"の中でマウスを動かすと画面上でのx軸の座標を取得し、id名"point"のテキストが変わる
枠内のX座標を取得します。
eはeventの略でイベントの引数に設定する事でイベントの要素を取得できます。
イベントの要素を取得する
取得方法 | 取得するもの |
---|---|
e.target | 要素を取得 |
e.pageX/Y | ページ全体を通しての座標(左上を基準) |
e.clientX/Y | ブラウザウインドウ内での座標(左上を基準) |
e.offsetX/Y | 要素内の座標 |
<div id="frame2"></div>
<div>target:<span id="target">クリックすると要素を取得できます</span></div>
<div>pageX:<span id="pageX"></span></div>
<div>pageY:<span id="pageY"></span></div>
<div>clientX:<span id="clientX"></span></div>
<div>clientY:<span id="clientY"></span></div>
<div>offsetX:<span id="offsetX"></span></div>
<div>offsetY:<span id="offsetY"></span></div>
const box = document.getElementById('frame2');
window.addEventListener('mousemove', (e)=>{
document.getElementById('pageX').textContent = e.pageX;
document.getElementById('pageY').textContent = e.pageY;
document.getElementById('clientX').textContent = e.clientX;
document.getElementById('clientY').textContent = e.clientY;
document.getElementById('offsetX').textContent = e.offsetX;
document.getElementById('offsetY').textContent = e.offsetY;
});
window.addEventListener('click', e=>{
document.getElementById('target').textContent = e.target;
});
target:クリックすると要素を取得できます
pageX:
pageY:
clientX:
clientY:
offsetX:
offsetY:
2-4.mousedown, mouseup
<p id="mouse"></p>
const mouse = document.getElementById('mouse'); //id名"mouse"を取得し定数"mouse"に代入
window.addEventListener('mousedown', () =>{
mouse.textContent= '押してます';
});
//画面上でマウスを押し込むと、id名"mouse"のテキストが「押してます」に変わる
window.addEventListener('mouseup', () =>{
mouse.textContent= '離しました';
});
//画面上ででマウスを離すと、id名"mouse"のテキストが「離しました」に変わる
マウスボタンを押し続けてください

こばゆた
セレクターを”window”とすると画面上が対象となります
2-5.keypress
<p id="keypress">あなたが押したキーは…。</p>
const keyPress = document.getElementById('keyPress') //id名"keyPress"を取得し定数"keyPress"に代入
window.addEventListener('keypress', e =>{
keyPress.textContent= `あなたが押したキーは${e.key}です。`;
});
//画面上でキーボードを押すと押したキーが"keyPress"に表示される
文字キーと一部のキーが押された時のみ反応します。

こばゆた
どれが反応するかは実際にキーボードを打ってみてください
あなたが押したキーは…。
2-6.keydown, keyup
<p id="key"></p>
const key = document.getElementById('key'); //id名"key"を取得し定数"key"に代入
window.addEventListener('keydown', e =>{
key.textContent= `あなたが押したキーは${e.key}です。`;
});
//画面上でキーボードを押すと押したキーが"key"に表示される
keypressと異なり修飾キーを含めた全てのキーが押された時に反応します。

こばゆた
こちらもどれが反応するかキーボードを打ってみてください
あなたが押したキーは…。
<p id="key2"></p>
const key2 = document.getElementById('key2'); //id名"key2"を取得し定数"key2"に代入
window.addEventListener('keydown', () =>{
key2.textContent= '押してます';
});
//画面上でキーボードを押し込むと、id名"key2"のテキストが「押してます」に変わる
window.addEventListener('keyup', () =>{
key2.textContent= '離しました';
});
//画面上でキーボードを離すと、id名"key2"のテキストが「離しました」に変わる
キーボードのキーを押し続けてください
3.まとめ
イベントを追加する まとめ
セレクター名.addEventListener('イベントの種類', 関数名);
第1引数にはイベントの種類、第2引数には関数があれば関数名を記入する
イベント名 | イベントの起こるタイミング |
---|---|
click | クリックしたとき |
dblclick | ダブルクリックしたとき |
mouseover | カーソルがターゲットに乗ったとき |
mouseout | カーソルがターゲットから降りたとき |
mousemove | カーソルが移動したとき |
mousedown | マウスボタンを押しているとき |
mouseup | 押したマウスボタンが上がったとき |
keypress | キーボードのキーを押しているとき |
keydown | キーを押しているとき |
keyup | キーを離したとき |
引数にeventの略であるeを設定する事でイベントの要素を取得できる
セレクター名.addEventListener('イベントの種類', e =>{
//処理
});
取得方法 | 取得するもの |
---|---|
e.target | 要素を取得 |
e.pageX/Y | ページ全体を通しての座標(左上を基準) |
e.clientX/Y | ブラウザウインドウ内での座標(左上を基準) |
e.offsetX/Y | 要素内の座標 |
コメント