document.getElementById在Mozilla中不起作用

时间:2011-11-01 12:21:00

标签: javascript

我在Mozilla中遇到document.getElementByID问题。在IE和Chrome中,我的代码运行良好。

我写了以下代码:

<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中不起作用吗?

2 个答案:

答案 0 :(得分:5)

我不认为这是对getElementById的调用问题 - 如果是,那么你没有提供足够的细节 - 但我可以告诉你Firefox和其他一些浏览器没有实现{{ 1}}。对于这些浏览器,您需要直接使用innerText或文本节点。

您可以使用功能检测确定是否支持textContent

textContent

然后,在代码中使用此变量进行属性访问:

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

随意将变量缩短为您感觉更舒服的东西。请注意,两个属性之间的行为存在一些细微差别,但大多数情况下您不会注意到它们。

text1[textContentOrInnerText] += x[i]; 是标准行为,这就是我在代码中首先测试它的原因。

答案 1 :(得分:2)

innerText在DOM标准的任何地方都没有被引用,因此它是非标准的,IE只是黑客攻击。

请使用.textContent获取文字内容。

对于浏览器支持,请使用库或shim