生成的表在 Firefox 33 中为空
Generated table is empty in firefox 33
本文关键字:Firefox 更新时间:2023-09-26
我正在尝试使用简单的"for"循环生成一个表,并且所有行和单元格都生成得很好,但它们在 Firefox 中显示为空。如果您尝试在任何阶段记录单元格的 innerText,内容就在那里,似乎它破坏了一切。
下面是代码示例:http://jsfiddle.net/7s8e4w3p/
.html
<table id="table">
<tr>
<th>This</th>
<th>Is</th>
<th>Table</th>
<th>Header</th>
<th>in</th>
<th>JsFiddle</th>
</tr>
</table>
.css
th, td {
border: 1px solid black;
}
.js
for(var i=0; i<=5; i++){
var tr = document.createElement('tr');
for(var j=0; j<=5; j++){
var td = document.createElement('td');
td.innerText = "test";
tr.appendChild(td);
}
document.getElementById('table').appendChild(tr);
}
在Chrome,IE,Opera,Mobile Safari甚至Android浏览器中运行良好。我错过了什么?
火狐的问题是你使用的是.innerText
,这不是一个标准属性。
请改用.textContent
。
为了支持 IE8,我通常会为整个应用程序创建一个变量,该变量将引用正确的属性名称。喜欢这个:
var text = ("textContent" in document.documentElement) ? "textContent" : "innerText";
然后像这样使用它:
td[text] = "test";
虽然我不知道它会有任何区别,但您可以通过在将行添加到表中之前附加到documentFragment
来避免接触循环中的 DOM。
// Generic container for holding the rows before they're appended
var frag = document.createDocumentFragment();
for(var i=0; i<=5; i++){
var tr = document.createElement('tr');
for(var j=0; j<=5; j++){
var td = document.createElement('td');
td.textContent = "test";
frag.appendChild(td);
}
}
// Appends all the rows at once
document.getElementById('table').appendChild(frag);
使用"textContent"属性是代码示例的修复程序,但您也可以考虑构建要注入到表中的 HTML 内容字符串。
var str = '';
for(var i=0; i<=5; i++){
str += '<tr>';
for(var j=0; j<=5; j++){
str += '<td>test</td>';
}
str += '</tr>';
}
document.getElementById('table').innerHTML = str;
这样做的主要优点是,您首先构建整个内容,然后在一个事件中将内容插入到表中,仅导致单个绘制/重排事件。
根据表/内容的复杂性,这可能比构建单个 DOM 元素并逐个插入要好得多。
有关性能比较,请参阅此 JSPerf 测试:http://jsperf.com/table-generation-options(TL;DR 字符串连接在桌面浏览器上更快,在 Internet Explorer 中快 10 倍...但是在移动WebKit上,DOM方法似乎更快)
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- JS可以在Chrome中工作,但不能在Firefox中工作
- createElement("a") - FireFox JavaScript
- 为什么javascript:void(0)在Firefox中不起作用
- Facebook登录按钮没有'不能在Firefox上工作
- jpm的默认Firefox路径没有'不起作用
- 重载JS'firefox中的对象原型
- Ajax调用在Firefox中不会自动响应
- JS在firefox中无法正常工作
- firefox插件和dev/panel之间的通信
- IE/Chrome中未定义的函数,但Firefox中没有
- ascii输入键通过firefox中的javascript返回0
- 在firefox和chrome中的左侧显示iframe滚动条
- html5 drawImage适用于firefox,而不是chrome
- angularjs$valid-on-dates在firefox中报告错误
- 您可以使用JavaScript和Firefox扩展来更改现有页面吗
- 设置 CSS 背景在 Firefox 中不起作用
- 如何从Javascript打开Firefox
- 滚动在Chrome中有效,但在Firefox或IE中无效
- firefox插件:退出不工作的应用程序观察器