LoginSignup
12
7

More than 1 year has passed since last update.

JavaScript ボタン要素にonclick属性を追加する

Last updated at Posted at 2021-05-03

追加方法

Attributeとして追加する

setAttributeで追加する。

<button id="button">ボタン</button>
const button = document.getElementById('button');
button.setAttribute('onclick', 'pushButton()');

メソッド名の後の括弧を忘れないようにする

ページ読み込み後

<button id="button" onclick="pushButton()">ボタン</button>

Propertyとして追加する

onclickプロパティに追加する。

<button id="button">ボタン</button>
const button = document.getElementById('button');
button.onclick = pushButton;

メソッド名の後の括弧は不要

addEventListenerで追加する

addEventListener第一引数にはonclickではなく、clickを渡す。

<button id="button">ボタン</button>
const button = document.getElementById('button');
button.addEventListener('click', pushButton);

メソッド名の後の括弧は不要

コメントについて

mikawanaさんから頂いたコメントについて追記します。

上書きと追加

AttributeProperty によるクリックイベントの追加は、厳密には上書き
例えば、以下のサンプルコード1では、ボタン押下後はpushButton1メソッドは実行されず、pushButton2メソッドのみ実行される。

  • サンプルコード1
const button = document.getElementById('button');
button.setAttribute('onclick', 'pushButton1()');
button.setAttribute('onclick', 'pushButton2()');

function pushButton1() {
  alert('クリックされました -1-');
}
function pushButton2() {
  alert('クリックされました -2-');
}

これはsetAtrributeonclickに変えても同様の動作をする(サンプルコード2)。

  • サンプルコード2
const button = document.getElementById('button');
button.onclick = pushButton1;
button.onclick = pushButton2;

function pushButton1() {
  alert('クリックされました -1-');
}
function pushButton2() {
  alert('クリックされました -2-');
}

これらに対してaddEventListenerではメソッドが追加され、イベント時には両方実行される(サンプルコード3・画像1)。

  • サンプルコード3
const button = document.getElementById('button');
button.addEventListener('click', pushButton1);
button.addEventListener('click', pushButton2);

function pushButton1() {
  alert('クリックされました -1-');
}
function pushButton2() {
  alert('クリックされました -2-');
}
  • 画像1

2021-05-03_15h42_14.gif

また、サンプルコード4のように書くと、ページ読み込み後のonclick属性にはpushButton1メソッドが入っているにも関わらず(ページ読み込み後html)、ボタン押下時に実行されるのはpushButton2メソッドである(画像2)。

  • サンプルコード4
const button = document.getElementById('button');
button.setAttribute('onclick', 'pushButton1()');
button.onclick = pushButton2;

function pushButton1() {
  alert('クリックされました -1-');
}
function pushButton2() {
  alert('クリックされました -2-');
}
  • ページ読み込み後html
<button id="button" onclick="pushButton1()">ボタン</button>
  • 画像2

2021-05-03_16h19_47.gif

参考記事

12
7
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7