Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript firefox 33中生成的表为空_Javascript_Html_Css_Firefox_Dom - Fatal编程技术网

Javascript firefox 33中生成的表为空

Javascript firefox 33中生成的表为空,javascript,html,css,firefox,dom,Javascript,Html,Css,Firefox,Dom,我试图生成一个带有简单“for”循环的表,所有行和单元格都生成得很好,但在Firefox中它们看起来是空的。如果你试图在任何阶段记录单元格的内部文本,内容就在那里,似乎是它打破了一切 下面是代码示例: html js for(var i=0;ifirefox的问题在于您使用的是.innerText,这不是标准属性 改用.textContent 为了支持IE8,我通常为整个应用程序创建一个变量,该变量将引用正确的属性名。如下所示: var text = ("textContent" in do

我试图生成一个带有简单“for”循环的表,所有行和单元格都生成得很好,但在Firefox中它们看起来是空的。如果你试图在任何阶段记录单元格的内部文本,内容就在那里,似乎是它打破了一切

下面是代码示例:

html

js


for(var i=0;ifirefox的问题在于您使用的是
.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);
//用于在追加行之前保存行的通用容器
var frag=document.createDocumentFragment();
对于(var i=0;i)使用“TetryFultEnter”属性是代码示例的修复,但是您也可以考虑建立一个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;
var-str='';

对于(var i=0;如果出于性能原因,通常最好先生成表的所有内容,然后一次性进行设置,这样只有一个绘制/回流操作,而不是几个。是的,这很明显,但其目的是显示随时间的变化。无论如何,浏览器直到函数结束才会回流,是吗?每次DOM i更新后可能会出现回流。是的,但在同步操作中,在线程释放之前它不会阻塞吗?我从未见过在线程持续被占用的情况下重新绘制浏览器。谢谢,伙计!textContent工作得很好,关于td[text]的好主意将在将来牢记在心。
td[text] = "test";
// 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);
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;