【问题标题】:Colspan in IE7/8 not respected不尊重 IE7/8 中的 Colspan
【发布时间】:2017-06-04 06:00:48
【问题描述】:

DOM 看起来像这样:

<table>
  <tr>
    <td>a</td>...<td>g</td>
  </tr>
  <tr>
    <td colspan="3">
      <table>
        ...
      </table>
    </td>
  </tr>
  <tr>
    <td></td>...<td></td>
  </tr>
</table>

知道为什么这在 IE 中不起作用吗?我尝试在保存内表的TD 上设置width:auto,而table-layout:fixed 不可行,因为表格数据是动态生成的。

可能出了什么问题?

目前表格只填充第一列,不会跨越。

更新:示例

http://stefankendall.com/files/example.html

【问题讨论】:

  • 到底出了什么问题?我们可以获取屏幕截图或示例吗?您是否尝试过在 td 元素上设置边框以查看它们的位置或是否正在渲染?
  • 我已更新以描述实际行为。

标签: html html-table internet-explorer-7


【解决方案1】:

使用colSpan,而不是colspan

【讨论】:

  • 到底是谁投了反对票?这是我的问题的正确解决方案。
  • 属性输入小写。
  • @Ken Ray 仅仅因为应该做某事并不意味着实施者就是这样做的。这种事情在IE中时有发生。
  • 你没有提到它是在 jQuery 中。 JavaScript 属性和样式一直都是这样格式化的(即 backgroundImage 和 className)。默认 HTML 为“colspan”,jQuery 为“colSpan”。但是 jQuery 会将其转换回它生成的实际 HTML 中的“colspan”。
  • 这不仅仅是一个 jQuery 解决方案——它使用旧的 element.setAttribute("colSpan", "5") 解决了这个问题。去他妈的IE!
【解决方案2】:

唯一想到的是,您可能必须在列中填充一些内容才能在 IE 中呈现它们。

<td>&nbsp;</td>

【讨论】:

  • 这不起作用。即使使用虚拟列,这也不起作用。
  • 我已经发布了一个完整的例子。我都是手写的,简直是地狱。 JS有点乱,但这是问题的核心。
  • @Stefan 我很确定这与您构建 HTML 的方式有关。如果我在 IE8 中打开开发人员工具,编辑新创建的表的随机部分(例如将 colSpan 转换为 colspan 并返回),然后应用更改,它将正确呈现。这可能是 IE 中的显示错误,或者您的 jQuery 调用已损坏。
  • $("&lt;td&gt;") 是一种有效的 jQuery 创建元素的方式吗?没有结束标签?
  • @Pekka:这就是构建新 dom 元素的方式。用 firebug 检查 DOM,你会看到有 元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
相关资源
最近更新 更多