【问题标题】:insert no-break space by element.innerText [duplicate]通过 element.innerText 插入不间断空格 [重复]
【发布时间】:2014-12-26 12:53:46
【问题描述】:

在一个 Web 应用程序中,我在第一步中动态创建了一个包含大约 10,000 空单元格的大型且相当复杂的表格(一些表格单元格将保持为空,而有些则不会)。我的第一个方法是使用带有 no-break space 的 innerHtml 来防止空单元格折叠:

td.innerHtml = ' ';

但这相当慢。然后我discovered 认为设置innerText 比设置innerHtml 快得多。所以我将代码更改为

td.innerText = '\u00a0';

因为td.innerText = ' ' 只是在每个单元格中写了文本" "。它似乎在 Internet Explorer 11 中工作,但在 Firefox 中,空单元格的边框消失了。但是,如果我检查单元格(通过 Firebug 或其他方式)并将它们与我以前的版本进行比较,我看不出有任何区别。

【问题讨论】:

  • 火狐不支持innerText,支持textContent
  • innerText 是微软的专有扩展,iirc。
  • 我不确定我理解“折叠”是什么意思,也不知道为什么不能用 CSS 更有效地解决这个问题。
  • 不要用 JS 解决这个问题。在你的 CSS 中使用 empty-cells: show;
  • 空单元格对我不起作用:o

标签: javascript html firefox innerhtml innertext


【解决方案1】:

element.innerText 不是标准属性。它是由 Microsoft 引入 Internet Explorer 的,但不保证其他浏览器支持它(这就是您看到怪癖的原因)。

使用element.textContent 或重新考虑您的方法。生成一个 10k 个单元格的表格听起来是个非常糟糕的主意。

【讨论】:

  • Chrome 很好地支持innerText。就像它支持document.all...
  • 我从来没有说过没有其他浏览器支持它,我说没有一个保证支持,因为它不是标准的。
  • 在大多数情况下,单元格要少得多。 10k 是一个更特殊的情况,但有时会发生。谢谢你的回答!
  • 由于旧 IE(例如 IE9)的 textContent 存在问题,我不得不同时使用这两种方法。跨浏览器文本设置见stackoverflow.com/questions/11646398/…
  • 如果需要多浏览器支持,请使用jQuery。
猜你喜欢
  • 2021-09-23
  • 1970-01-01
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2018-05-10
  • 2010-11-24
相关资源
最近更新 更多