• ベストアンサー

checkboxにcheckedされない

こちらで初めて質問させていただきます。 JAVASCRIPTにて、ONLOAD時に フォーム内のチェックボックスをデフォルトでONにする処理を 書いているのですが IE以外の環境で動作せず困っています。 ↓処理を行っているfunction function onload(all,tiku) { for(i = 1; i <= 47; i++){ mad=eval('document.form.m_mpref_'+formatNum(2,i)); if (all.indexOf(mad.value,0)>=0) { mad.checked = true; } } for(i = 1; i <= 10; i++){ mad=eval('document.form.m_tiku_'+formatNum(2,i)); if (tiku.indexOf(mad.value,0)>=0) { mad.checked = true; } } } function formatNum(keta, num) { var src = new String(num); var cnt = keta - src.length; if (cnt <= 0) return src; var str = new String; while (cnt-- > 0) str += "0"; return (str + src); } ↓呼び出し元 <body onload="onload('01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,19,20,16,17,18,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47','');"> フォーム内には 以下のようなINPUTが47あります <input type="checkbox" name="m_mpref_01" value="01" /> (つまりチェックボックス付きの都道府県が47あり、 その全てをONLOAD時にallにある番号の県をチェック状態にさせたいのです) IE環境では正常に動作するのですが FIREFOX NETSCAPE MACのIE で確認すると、ONLOAD時デフォルトでチェックが入っていないままの状態です。 これがなぜなのか全く分らないのです。 どなたか見当の付く方宜しければ教示下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • THX1138
  • ベストアンサー率51% (108/208)
回答No.1

関数名が重なっているのがいけないようです。 名前を変えてみてください。 アドレス欄に javascript: と打ち込むと too much recursion と出てきます。 onload 属性の中で onload という関数を呼び出していますが、その際上記コードにて定義されている関数ではなく、onload イベント関数それ自体が再度呼び出され、その内容は onload の呼び出しが書かれているのでまた onload イベント関数を実行し……と永久に続くことになります。 しまいにはギブアップして実行が止まります。

billybilly
質問者

お礼

有難うございました。ご指摘の通り関数名がonloadであることが原因でした。 確かに仰るとおりに異様に処理が長いと感じていました。

その他の回答 (1)

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.2

function onloadを別の名前にしたらどうでしょうか? また、以下のように記述すればonloadを使わなくても実現できるかと思います。 <input type="checkbox" name="m_mpref_01" value="01" checked />

billybilly
質問者

お礼

有難うございました。ご指摘の通り関数名がonloadであることが原因でした。

関連するQ&A