こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

チェックボックスがIE8で正しく動作しないのはなぜ

下記サンプルコードをIE8やIE7で試してみると、チェックボックスをクリックしても
その時点で動かず、ウインドウ上のどこかをクリックしないと動きません。
Firefox, Chrome, IE9ではチェックボックスをクリックした時点で動きます。
どこに問題があるのでしょうか。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
</head>
<body>
<form>
<ul id="t">
<li><input type="checkbox" name="t_0" onchange="fff()" value="0pt" /><label for="t_0">0pt</label></li>
<li><input type="checkbox" name="t_1" onchange="fff()" value="10pt" /><label for="t_1">10pt</label></li>
<li><input type="checkbox" name="t_2" onchange="fff()" value="20pt" /><label for="t_2">20pt</label></li>
<li><input type="checkbox" name="t_3" onchange="fff()" value="30pt" /><label for="t_3">30pt</label></li>
<li><input type="checkbox" name="t_4" onchange="fff()" value="40pt" /><label for="t_4">40pt</label></li>
<li><input type="checkbox" name="t_5" onchange="fff()" value="50pt" /><label for="t_5">50pt</label></li>
<li><input type="checkbox" name="t_6" onchange="fff()" value="60pt" /><label for="t_6">60pt</label></li>
<li><input type="checkbox" name="t_7" onchange="fff()" value="70pt" /><label for="t_7">70pt</label></li>
<li><input type="checkbox" name="t_8" onchange="fff()" value="80pt" /><label for="t_8">80pt</label></li>
<li><input type="checkbox" name="t_9" onchange="fff()" value="90pt" /><label for="t_9">90pt</label></li>
<li><input type="checkbox" name="t_10" onchange="fff()" value="100pt" /><label for="t_10">100pt</label></li>
</ul>
</form>

<table>
<tr>
<td>サンプル1 :</td><td>60pt</td>
</tr>
</table>
<table>
<tr>
<td>サンプル2 :</td><td>30pt</td>
</tr>
</table>
<table>
<tr>
<td>サンプル3 :</td><td>40pt</td>
</tr>
</table>
<script type="text/javascript">
function fff() {
var a = new Array;
var b = document.getElementById('t').getElementsByTagName("input");
var c = document.getElementsByTagName('table');

for(i=0,len=b.length; i<len; i++){
if(b[i].checked == true){
a[i] = b[i].value;
}else{
a[i] = "";
}
}

for(i=0,len=c.length; i<len; i++){
var d = c[i].getElementsByTagName('td');
var e = d[1].innerHTML;
var if1 = a[0]==e || a[1]==e || a[2]==e || a[3]==e || a[4]==e || a[5]==e || a[6]==e || a[7]==e || a[8]==e || a[9]==e || a[10]==e;
var if2 = a[0]=="" && a[1]=="" && a[2]=="" && a[3]=="" && a[4]=="" && a[5]=="" && a[6]=="" && a[7]=="" && a[8]=="" && a[9]=="" && a[10]=="";
if(if1 || if2){
c[i].style.display = '';
}else{
c[i].style.display = 'none';
}
}
}
</script>
</body>
</html>

投稿日時 - 2011-12-31 18:20:52

QNo.7218601

すぐに回答ほしいです

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

こんにちは。

元々onchangeの挙動がIEとFFで違っていたのですがIE9でFF等と同じになったようです。

IE7,IE8について同じ動きをさせるのであればonchangeではなくonclickでイベントを拾えば良いと思います。

投稿日時 - 2011-12-31 18:58:56

お礼

無事に解決しました。有難うございました。

投稿日時 - 2011-12-31 20:50:57

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問