2012-03-27 8 views
0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 
<html> 
<head> 
<script type="text/javascript"> 
function selectSomething(){ 
    var obj = document.all.select1; 
    var selectValue = obj.options[obj.selectedIndex].value; 

    if(selectValue == "1"){ 
     document.getElementById("text").innerHTML ="one"; 
    } 
    if(selectValue == "2"){ 
     document.getElementById("text").innerHTML ="two"; 
    } 
} 
</script> 
</head> 
<body onload="selectSomething()"> 

<select id="select1" onchange="selectSomething()"> 
<option value="1">One</option> 
<option value="2">Two</option> 
</select> 

<div id="text"></div> 

</body> 
</html> 

このコードはChrome 17.0.963.83、IE 8.0.6001.18702で動作しますが、Firefox 11.0では動作しません。このWebページが大きなプロジェクトの一部になるため、私はできないDOCTYPEを削除しない限り、innerhtmlはFirefoxに表示されません。これはFirefoxのバグですか? Firefoxでこの作業を行うにはどうしたらいいですか?innerhtml firefoxがDoc typeで動作しません

+0

なぜFRAMESET doctypeがありますか? – Quentin

答えて

3

Firefoxのエラーコンソールを見てください(本当にウェブ開発者にとって有益です)。 Firefoxではdocument.allは未定義です。

代わりにdocument.getElementById("select1")を使用してください。

+0

ちょうどそれをロードし、 "document.all is undefined var obj = document.all.select1;"エラー。あなたのようにスイッチを作って、それは働いた。ありがとうございました! – b10hazard

+0

@ bitnuk3r:それを聞いてうれしいです。私はそれがあなたの開発をFirefox(IEよりも標準に準拠)から始め、それを他のブラウザで動作させるのに必要な調整を実行することがベストプラクティスであることがわかります。 Web開発者にとって非常に便利なFirefoxアドオンは、[Firebug](http://getfirebug.com/)です。 – Travesty3

+0

ええ、私は投稿する前にそれをチェックしたはずです。私が間違っていると思うのは、ここのコミュニティがすばらしく、ソリューションがすばやく掲載されているからです。再度、感謝します。途中で素晴らしいアバター、カルバンとホッブズは素晴らしい漫画のストリップでした! – b10hazard

2

Firefoxはdocument.allので、代わりの

var obj = document.all.select1; 

使用

var obj = document.getElementById("select1"); 

(あなたも行方不明のxmlns)

1

この作品

var obj = document.getElementById("select1"); 
1

Trのをサポートしていません。 y document.allの代わりにdocument.getElementByIdを使用しています。 allは推奨されていませんので、XHTMLをdoctypeとして使用すると死にそうと思っています。

+0

これから始めるには、標準でなければならないことになっています。それは単なるIE4ismです。 – Quentin

+0

@Quentinいいえ、単に廃止されていたに過ぎませんでした。最初に標準である必要はありません。 'document.all'の使用は、IE用のページを書くときでさえ廃止されているので、非難されています。また、OPはこのコードがdoctype(quirksモード)なしでFFで動作することを示していることに注意してください。 –

関連する問題