请帮我解决this验证错误。我无法理解它的含义或标准不符合我的HTML。
我会在这里重新发布,因为希望我能解决它并且该链接将不再有效:
由元素td建立的表格列2没有以单元格开头的单元格。
…="tooltip_table"><tr><td colspan="2">20 yd range</td></tr><tr><td colspan="2"
↑
答案 0 :(得分:16)
当您说colspan="2"
时,该列应该跨越两列。我的猜测是,在其他任何地方都没有定义第二列,因此colspan="2"
不可能(并且不必要)。
我在spec中找不到任何明确说明这是非法的内容。也许在该规范中引用的表计算算法与4.01不同,但在我的时区中试图绕过它的方式为时已晚:)
但是,我发现错误信息对于成为一个彻头彻尾的错误来说太完美了。
由元素td建立的表格列2没有以单元格开头的单元格。
通过使用colspan="2"
,您意味着存在第二列,在这种情况下不存在。常识告诉我唠叨是正确的。
也许有人可以对此有所了解......或者它确实是一个错误。
答案 1 :(得分:12)
HTML 5.2草案:第4.9.12.1节形成表
http://w3c.github.io/html/tabular-data.html#forming-a-table
步骤22:如果表中只有一个行或列包含没有锚定到它们的单元格的槽,那么这就是表模型错误。
答案 2 :(得分:2)
我认为这是一个错误,但仍未修复。考虑this example page并通过W3C验证器运行它。它给出了“由元素td建立的表格列3没有从它开始的单元格”的错误,但是每个表有4个单元格/列,并且在第二个单元格上调用2的“colspan”。
答案 3 :(得分:1)
看起来像HTML5验证器的问题。 如果您使用HTML 4.01 Transitional进行验证,则不会出现该错误,并且html5中的表格html没有那么多。
报告它可能是一个好主意
答案 4 :(得分:1)
我在动态创建的表上遇到了同样的错误。根据输入,显示或不显示某些行。像这样:
不会导致错误:
<table>
<tr>
<td> cell 1 in row 1 </td>
<td> cell 2 in row 1 </td>
</tr>
<tr>
<td colspan=2> one cell in row 2 </td>
</tr>
</table>
不会导致错误:
<table>
<tr>
<td> cell 1 in row 1 </td>
<td> cell 2 in row 1 </td>
</tr>
</table>
导致错误:
<table>
<tr>
<td colspan=2> one cell in what is now the only row </td>
</tr>
</table>
在我没有显示第一行的情况下,当我编辑页面以删除上一个示例中的colspan时,错误消失了。像这样:
<?php if (first row with two cells is displayed) echo 'colspan=2'; ?>
我觉得这很合乎逻辑。 colspan = 2只有单个细胞就像是告诉有人来我这条街没有任何交汇处右转,相信它们会继续直行。他们不会。相反,他们会挂断寻找不存在的东西。也许不是一个完全准确的类比,但你可以想象一个愚蠢的浏览器在寻找你告诉它的东西时会产生显示错误,但事实并非如此。不应期望浏览器“认为”可能你的代码与你编写代码的方式不同。
答案 5 :(得分:1)
只需修正Alohci的回答链接。
https://w3c.github.io/html/single-page.html#forming-a-table
答案 6 :(得分:0)
这个帖子有点旧,但是我发布这个帖子给任何碰到它的人。
使用标记定义每个列会删除该消息,并为colspan提供与之相关的内容。
答案 7 :(得分:0)
如果您启动该表 - 它会修复验证列错误。 如果您的表有8列,那么第一行必须有8个元素,如果您只是初始化,则不希望看到。 css元素是: tr.Init {边界:无;} 以及8列表的以下第一行。 结果是 - 您没有看到第一行,并且您的验证错误已得到修复。