特定のクラス名を持つ全ての要素のクリック時の処理を指定

特定のクラス名を持つ全ての要素のクリックイベントにイベントハンドラをバインドするJavaScriptサンプル。

複数の要素のクリックイベントにイベントハンドラをバインドするには、ページ読み込み時に、for文を使いバインドする。

サンプル(実装例)

1

実装例の動作について

  • 「+」というテキストを持つ背景色が赤色のspan要素をクリックすると、背景色が黄色のdiv要素内の数字をカウントアップする。
  • 「-」というテキストを持つ背景色が青色のspan要素をクリックすると、背景色が黄色のdiv要素内の数字をカウントダウンする。

ソースコード

JavaScript

<script type="text/javascript">
window.onload = function () {
    var $sampleOutput = document.getElementById( "sampleOutput" );
    var $sampleAElements = document.getElementsByClassName( "sampleA" );
    for( var $i = 0; $i < $sampleAElements.length; $i++ ) {
        $sampleAElements[$i].onclick = function () {
            $sampleOutput.innerHTML = parseInt( $sampleOutput.innerHTML ) + 1;
        }
    }
    var $sampleBElements = document.getElementsByClassName( "sampleB" );
    for( var $i = 0; $i < $sampleBElements.length; $i++ ) {
        $sampleBElements[$i].onclick = function () {
            $sampleOutput.innerHTML = parseInt( $sampleOutput.innerHTML ) - 1;
        }
    }
}
</script>

HTML

<div id="sampleOutput">1</div>
<div id="sampleController">
    <span class="sampleA"></span>
    <span class="sampleB"></span>
    <span class="sampleA"></span>
    <span class="sampleB"></span>
    <span class="sampleA"></span>
    <span class="sampleB"></span>
    <span class="sampleA"></span>
</div>

CSS

<style>
.sampleA,
.sampleB {
    padding: 5px 15px;
    border-radius: 10px;
    color: white;
    cursor: pointer;
}
.sampleA {
    background-color: red;
}
.sampleB {
    background-color: blue;
}
#sampleController {
    width: 360px;
    margin: 10px 0;
    text-align: center;
}
#sampleOutput {
    width: 300px;
    padding: 30px;
    font-size: 30px;
    background-color: yellow;
    text-align: center;
    border-radius: 10px;
}
</style>

解説

JavaScript

<script type="text/javascript">

// ページ読み込み時に実行
window.onload = function () {

    // id属性値が「sampleOutput」である要素への参照を変数「$sampleOutput」に代入
    var $sampleOutput = document.getElementById( "sampleOutput" );

    // class属性値が「sampleA」である複数の要素への参照を配列変数「$sampleAElements」に格納
    var $sampleAElements = document.getElementsByClassName( "sampleA" );

    // 配列変数「$sampleAElements」の要素数分ループ処理
    for( var $i = 0; $i < $sampleAElements.length; $i++ ) {

        // クリックイベントにイベントハンドラをバインド
        $sampleAElements[$i].onclick = function () {

            // class属性値が「sampleA」である要素をクリックした時の処理
            $sampleOutput.innerHTML = parseInt( $sampleOutput.innerHTML ) + 1;

        }

    }

    // class属性値が「sampleB」である複数の要素への参照を配列変数「$sampleBElements」に格納
    var $sampleBElements = document.getElementsByClassName( "sampleB" );

    // 配列変数「$sampleBElements」の要素数分ループ処理
    for( var $i = 0; $i < $sampleBElements.length; $i++ ) {

        // クリックイベントにイベントハンドラをバインド
        $sampleBElements[$i].onclick = function () {

            // class属性値が「sampleB」である要素をクリックした時の処理
            $sampleOutput.innerHTML = parseInt( $sampleOutput.innerHTML ) - 1;

        }

    }
}
</script>

主に使用した構文、プロパティ、メソッド、イベント等。

スポンサード リンク

カテゴリー: JavaScript, イベント, 逆引き パーマリンク