2011-11-01 84 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

相关问题