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

解決済みの質問

javascriptがIEで機能しない

ヘッダー内
<script language="JavaScript">
<!--
function view_ctrl() {
selectvalue = document.form1.select1.options[form1.select1.selectedIndex].value;
if(document.getElementById) {
document.getElementById("block1").style.display = "none";
if(selectvalue=="選択1"){
document.getElementById("block1").style.display = "block"
}
}
}
// -->
</script>

ボディー内
<form name="form1">
<select name="select1" onchange="view_ctrl()">
<option value="">選択してください</option>
<option>選択1</option>
<option>選択2</option>
</select>
</form>
<table><tr><td><div id="block1" style="display:block">表示</div></td></tr></table>

Firefox3.6ではうまく選択肢によって表示非表示にできたのですが、IE8では選択1を選択しても非表示のままです
どこを修正してやればいいでしょうか?
ぜひ御指南ください。

投稿日時 - 2011-02-17 18:47:49

QNo.6530191

すぐに回答ほしいです

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

文字コードはUTF-8になっていますか?
valueではなくtextにすればどうでしょうか?
<option>にvalue属性を付与して、そちらで判断してみてはどうでしょうか?

投稿日時 - 2011-02-17 19:21:10

お礼

早速の回答ありがとうございました。
value属性を持たせたら一発で解決できました。
POSTなどで送った場合、value属性なしなら自動的に値を取ってくれるので、javascript上でもそうなるものと勝手に思いこんでおりました。
ありがとうございました。

投稿日時 - 2011-02-17 19:36:39

ANo.1

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

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

回答(2)

ANo.2

私の環境ではfx3.6でも動きませんね。

原因は
>selectvalue = document.form1.select1.options[form1.select1.selectedIndex].value;
の2番目のform1で要素の特定ができないようです。

IEの方は、HTMLのoptionにvalueが設定されていないのでvalue値がとれていない(→ ""として評価されている)ためと思われます。


両方を満たすために、optionにvalueを設定して、
<option value="selection1">選択1</option>
<option value="selection2">選択2</option>


function view_ctrl() {
var selectValue = document.forms["form1"].elements["select1"].value;
document.getElementById("block1").style.display = (selectValue=="selection1")?"block":"none";
}
みたいにするとどうでしょうか?

投稿日時 - 2011-02-17 19:31:19

お礼

ありがとうございます。
value属性を持たせてないことが原因と解決に至りました。
御指南感謝します。

投稿日時 - 2011-02-17 19:37:49

あなたにオススメの質問