イベントリスナを複数要素にまとめて登録する二つ方法

Javascript

今回は複数要素にイベントリスナを登録する方法を紹介します。

ループでイベントリスナを登録する

HTMLコード:

<div
 id=link_area>

    <a class=bt>1</a>
    <a class=bt>2</a>
    <a class=bt>3</a>
    <a class=bt>4</a>
    <a class=bt>5</a>
</div>

// クラス名で取得
const alinks = document.getElementsByClassName(‘a_link’);
for (let alink of alinks) {
    alink.addEventListener(‘click’,(e)=>{
        console.log(e.target.id);
        e.preventDefault();  //イベントのキャンセル
    })
}

//タグ名から取得
const atags = document.getElementsByTagName(‘a’);
[…atags].forEach(atag=>{
    atag.addEventListener(‘click’,(e)=>{
        console.log(e.target.id);
        e.preventDefault(); //イベントのキャンセル
    });
});

要素の親要素にイベントリスナを登録する

document.getElementById(“link_area”).onclick = function(ev) {
    console.log(ev.target.id);
    if (ev.target.tagName === ‘A’ && ev.target.id === ‘a4’) {
        alert(‘a4 clicked’);
    }
    ev.preventDefault();
}

イベントのキャンセル

伝搬の最後にブラウザーが実行するデフォルト動作に関連するイベントがあります。

イベントをキャンセルすれば、デフォルト動作の実行が止まります。
リスナーで、e.preventDefaultイベントオブジェクトのメソッドを呼びます。

タイトルとURLをコピーしました