IE7/8不支持Colspan属性

7
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

2
出了什么问题?我们能看到屏幕截图或示例吗?您是否尝试在td元素上设置边框以查看它们的位置或是否正在呈现? - animuson
我更新了以描述实际行为。 - Stefan Kendall
2个回答

20
使用 colSpan,而不是 colspan

3
谁TMD给这个点了踩?这是我问题的正确解决方案。 - Stefan Kendall
1
属性应该以小写形式输入。 - Ken Ray
2
@Ken Ray 只是因为某件事应该被做,并不意味着实施者会以那种方式去做。这种情况在IE中经常发生。 - Patrick McDaniel
插件:看起来IE刚刚进行了扩展。无论哪种方式都可以在jQuery中使用。但是,如果你只是在输出的HTML中设置colspan(而不是在JavaScript中),你应该始终使用完全小写,因为每个浏览器都会识别它。 - animuson
1
这不仅仅是一个jQuery解决方案 - 这使用好老的element.setAttribute("colSpan", "5")来解决问题。该死的IE! - Alkanshel
显示剩余2条评论

1
唯一想到的是,您可能需要在列中填充某些内容,以便它们在IE中呈现。
<td>&nbsp;</td>

我已经发布了一个完整的示例。我全部手写,而且非常困难。JS 有点混乱,但那是问题的核心。 - Stefan Kendall
1
@Stefan 我相信这与你构建HTML的方式有关。如果我在IE8中打开开发人员工具,编辑新创建的表格的任意部分(例如将colSpan变成colspan然后再变回来),并应用更改,它将正确呈现。这可能是IE中的显示错误,或者你的jQuery调用出了问题。 - Pekka
@Stefan 在 Firefox 中是可以的。在我的 IE 8 中,DOM 浏览器对于新元素的行为很奇怪(它们一开始根本不会显示出来)。但如果这是正确的方法,那也许没问题。奇怪... - Pekka
它运行良好。事实证明,“colSpan”使其在IE中正常工作。 - Stefan Kendall
@Pekka:IE6/7/8从何时开始呈现HTML?它呈现的是类似HTML的东西,但并非真正的HTML。 :) - Stefan Kendall
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接