小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


すべてチェックブックマークレット

2010.6.26追記

Hatena::Letでブックマークレット公開しました。こちらのほうがブックマークしやすいのでぜひご利用ください。

2009.10.21追記

スクリプトを修正しました。最新版は、こちらのエントリを参照してください。

はじめに

はてなダイアリーのキーワードリンク編集画面におけるチェックボックスの数は、文章の長さに比例して多くなる。僕としては、キーワードリンクの必要性をあまり感じていないので、できることなら取っ払っちゃいたいのだけど、あまりにもチェックボックスの数が多すぎると、手動でチェックする気にならない。
というわけで、ページ内のチェックボックスすべてにチェックをつけるブックマークレットを作ってみた。

よくわかるJavaScriptの教科書
たにぐち まこと
マイナビ
売り上げランキング: 12,569

まだ荒削りで、どこのページだろうとチェックボックスを見つけたら、ひたすらチェックしてしまうとんでもないプログラムである。キーワードリンク編集画面だけに適用させるには、さらなる改良が必要だけど、まあ暫定版として書いておこう。
※使用するときには、改行コードをエディタで空文字に変換してやって、改行を取り除く必要がある。

javascript:(function() {
  var inputTags = document.getElementsByTagName('input');
  var checkFlag = true;
  function isCheckAll() {
    var inputTags = document.getElementsByTagName('input');
    var flag = true;
    for(var i=0; i<inputTags.length; i++) {
      if(inputTags[i].type == "checkbox") {
        if(inputTags[i].checked == false) {
          flag = false;
        }
      }
    }
    return flag;
  }
  if(isCheckAll()) {
    checkFlag = false;
  }
  for(var i=0; i<inputTags.length; i++) {
    if(inputTags[i].type == "checkbox") {
      inputTags[i].checked = checkFlag;
    }
  }
)();
コメントつき

コメントを振ると以下のようなコードになる。すべてチェックされている場合は、チェックを外して、それ以外の場合はすべてチェックする。

//チェックボックスをすべてチェックする。
function checkAll() {
  var inputTags = document.getElementsByTagName('input');
  var checkFlag = true;
  
  //チェックボックスがすべてチェックされているかを調べる関数
  function isCheckAll() {
    var flag = true;
  
    for(var i=0; i<inputTags.length; i++) {
      if(inputTags[i].type == "checkbox") {
        if(inputTags[i].checked == false) {
          flag = false;
        }
      }
    }
    return flag;
  }
  //すべてチェック済みかどうか判定
  if(isCheckAll()) {
    checkFlag = false;
  }
  
  for(var i=0; i<inputTags.length; i++) {
    if(inputTags[i].type == "checkbox") {
      inputTags[i].checked = checkFlag;
    }
  }
}