4年前にも「InternetExplorer の馬鹿さ加減には本当にうんざり」ってエントリーで同じことを書いてた(笑)
マジで InternetExplorer は糞。
例えば、こういうスクリプト。
function disp_input_area2() {var form = document.forms.form1;if (form.kaito.value == "希望する") {document.getElementById('input_area2').style.display = 'block';}else {document.getElementById('input_area2').style.display = 'none';}}
HTML はこうね。
<input type="radio" name="kaito" id="kaito" value="希望する" onclick="disp_input_area2();" >希望する<br><input type="radio" name="kaito" id="kaito" value="希望しない" onclick="disp_input_area2();" >希望しない
これは、Chrome でも Firefox でも(つまり InternetExplorer(以下 IE) 以外では)ちゃんと実行される。
form で、「回答を希望する」というラジオボタンを選んだら名前やメールアドレスを入力する部分(<div id="input_area2">で囲まれた部分とか)がパクっと開くという動きをするわけだ。
ただし、IE では動かない。
IE では、チェックされた radio ボタンの value 値を取れないからだ。undefined になる。
糞である。
なので、value 値を使う代わりに、radio ボタンの checked な状態を全部調べる必要がある。
だから、例えば以下のようになっちゃう。
function disp_input_area2() {var form = document.forms.form1;var kaito = form.kaito;var flg = "no";for (var i = 0; i < kaito.length; i++) {if (kaito[i].checked == true) {if (i == 0) {flg = "yes";}}}if (flg == "yes") {document.getElementById('input_area2').style.display = 'block';}else {document.getElementById('input_area2').style.display = 'none';}}
糞だ・・・
value 値で判断するほうが自然だしソースもシンプルである。
時々、なんでか知らんけどブラウザの中で IE が一番好きとかいう変態技術者に出会うこともあるんだけど、賢い人ならやっぱり IE は捨てていかないと。
前にも書いたけど、例えば社内 Web システムの実行ブラウザとして IE を指定している情報管理部門やメーカーって怠慢だと思うのよね。
はっきり言って、IE に対応するためだけに余計な工数がかかるんだから。(ま、そこで何度も保守工数が発生することがメーカーとしては狙いなのかもしれんけどね(笑))
コメントする