快調

昨日は日が変わる前に自宅についたかつ、たまには早く寝るかってことで寝たら元気になりました!

早く寝たせいでめちゃくちゃ早く起きてしまい文庫を1冊読破した後に二度寝する余裕までありました(笑)目覚まし時計に起こされる事なく自然に起きるのはとてもすっきりしていますね。

チェックボックスに1つでもチェックが入っているかどうかを調べる

一覧画面で明細を選択して何か処理をする場合、ひとつもチェックされていなかったらメッセージボックスを出したい。

そんな要件を満たすために今まで結構めんどくさい事をしてた。なにがめんどくさいってチェックボックスの個数によって処理を分けないといけないから。チェックボックスの個数というのは

  • 1つも無い(checkboxオブジェクトが無い)
  • 1つしか無い(checkboxオブジェクトがある)
  • 2つ以上ある(checkboxオブジェクトが配列になっている)

とこの3パターン。今までは律儀にこう判定していたわけですが、今日はちょっと違う書き方をしてみた。

// IE用
function existChecked() {
    // 1個も無い
    if (!formName.checkboxName) {
        return;
    }

    var checkList;
    if (formName.checkboxName.length) {
        // 1個しか無い
        checkList = formName.checkboxName;
    } else {
        // 2つ以上ある
        checkList = [formName.checkboxName];
    }

    for (var i = 0; i < checkList.length; i++) {
        if (checkList[i].checked) {
            return true;
        }
    }
    return false;
}

別に美しくないんだけど、チェック状態の判定を1箇所でできるのは初めて書いた。配列かどうかの判定も美しい方法じゃなくて動いているからいいや系(苦笑)