2011-11-01 85 views
2

我在Mozilla中遇到document.getElementByID問題。在IE和Chrome中,我的代碼運行良好。document.getElementById在Mozilla中不工作

我寫了下面的代碼:

<script type="text/javascript"> 
function test(x, y) { 
var text1 = document.getElementById('text1'); 
for (var i = 0; i < x.length; i++) { 
    text1.innerText += x[i]; // prints 12345 
    } 
    text1.innerText += "\ny: " + y; // prints y: 1,2,3,4,5 
    } 
</script> 


<body> 
<form id="form1" runat="server"> 
<div> 
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 
</div> 
<div id="text1"></div> 
</form> 
</body> 

任何一個可以告訴爲什麼這不工作在Firefox?

+0

不工作如何?我可以看到你的ASP代碼(這對我沒有幫助),但是'test'函數的觸發器在哪裏?我問,因爲**所有瀏覽器**支持'getElementById'。 – ZenMaster

+0

'.innerText'不是標準的。不要使用它。使用'.textContent' – Raynos

回答

5

我不認爲這是在調用getElementById這就是問題所在—如果是的話,你沒有提供足夠的細節—,但我可以告訴你,Firefox和其他一些瀏覽器不實現innerText。對於這些瀏覽器,您需要直接使用textContent或文本節點。

你可以找出textContent是否支持或不使用特徵檢測:

var textContentOrInnerText = "textContent" in document.body 
           ? "textContent" : "innerText"; 

然後,您可以使用該變量在代碼中訪問屬性:

text1[textContentOrInnerText] += x[i]; 

隨意縮短這個變量可以讓你感覺更舒適。請注意,兩個屬性之間的行爲存在一些細微差異,但大多數情況下您不會注意到它們。

textContent是標準行爲,這就是爲什麼我先在我的代碼中進行測試的原因。

+0

如果我使用的textcontent數據不在IE中顯示 – Vivekh

2

innerText在DOM標準的任何地方都沒有被引用,因此它是非標準的,IE只是黑客。

請使用.textContent來獲取文本內容。

對於瀏覽器支持,請使用庫或shim

+0

如果我使用的textcontent數據不顯示在IE – Vivekh

+0

@Vivekh上面提到使用一個庫或一個墊片來支持瀏覽器。 – Raynos

相關問題