2012-03-27 67 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。 innerhtml從不在Firefox中顯示,除非我刪除DOCTYPE,這是我無法做到的,因爲此網頁將成爲較大項目的一部分。這是一個Firefox錯誤?我如何在Firefox中完成這項工作?innerhtml firefox不能使用Doc類型

+0

爲什麼你有一個FRAMESET文檔類型? – Quentin 2012-03-27 12:53:14

回答

3

看看Firefox錯誤控制檯(對於web開發人員非常有用)。在Firefox中,document.all未定義。您可以使用document.getElementById("select1")

+0

剛加載它,看到「document.all是未定義var obj = document.all.select1;」錯誤。像你說的那樣做了開關,它工作。謝謝! – b10hazard 2012-03-27 12:57:43

+0

@ bitnuk3r:很高興聽到它。我認爲這是開始在Firefox中開發的最佳實踐(比IE更符合標準),然後執行所需的任何調整,以使其可在其他瀏覽器中使用。 [Firebug](http://getfirebug.com/)是Web開發人員非常有用的Firefox附加組件。 – Travesty3 2012-03-27 13:02:01

+0

是的,我應該在發佈之前檢查過它。我想當我看到一個錯誤時,我的直覺就是「StackO它」,因爲這裏的社區非常棒,解決方案很快就會發布。再次感謝。順便說一下,好的化身,加爾文和霍布斯是一個偉大的漫畫! – b10hazard 2012-03-27 13:10:14

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.getElementById而不是document.allall已被棄用,所以我猜你在使用XHTML作爲你的文檔類型時會死亡。

+0

要被棄用,它必須是標準的開始。這只是一個IE4ism。 – Quentin 2012-03-27 12:52:55

+0

@Quentin不,它只是被用來被棄用;它不一定是第一個標準。即使爲IE編寫頁面,也不鼓勵使用document.all,因此不推薦使用。另外,請注意,OP聲明此代碼在沒有文檔類型(奇怪模式)的FF上工作。 – 2012-03-27 13:03:32