请帮我解决这个验证错误。我不明白这意味着什么,或者我的 HTML 不符合标准。
我会在这里重新发布它,因为希望我能修复它并且该链接将不再有效:
由元素 td 建立的表第 2 列没有以它开头的单元格。
…="tooltip_table"><tr><td colspan="2">20 yd range</td></tr><tr><td colspan="2"
↑
请帮我解决这个验证错误。我不明白这意味着什么,或者我的 HTML 不符合标准。
我会在这里重新发布它,因为希望我能修复它并且该链接将不再有效:
由元素 td 建立的表第 2 列没有以它开头的单元格。
…="tooltip_table"><tr><td colspan="2">20 yd range</td></tr><tr><td colspan="2"
↑
当您说colspan="2"
时,该列应该跨越两列。我的猜测是在able的其他任何地方都没有定义第二列,因此colspan="2"
不可能(并且不必要)。
我在规范中找不到任何明确说明这是非法的内容。也许该规范中引用的表格计算算法与 4.01 不同,但在我的时区尝试解决这个问题为时已晚:)
但是,我发现错误消息太完美了,不能成为一个彻头彻尾的错误。
由元素 td 建立的表第 2 列没有以它开头的单元格。
通过使用colspan="2"
,您暗示存在第二列,在这种情况下不存在。常识告诉我,唠叨是正确的。
也许有人可以对此有所了解......或者它确实是一个错误。
HTML 5.2 草稿:第 4.9.12.1 节 形成表格
http://w3c.github.io/html/tabular-data.html#forming-a-table
步骤 22:如果表中存在一行或一列只包含没有锚定单元格的槽,那么这是一个表模型错误。
我相信这是一个错误,并且仍未修复。考虑这个示例页面并通过 W3C 验证器运行它。它给出了“由元素 td 建立的表列 3 中没有单元格开始”的错误,但每个表都有 4 个单元格/列,并且在第二个单元格上调用了 2 的“colspan”。
看起来像 HTML5 验证器的问题。如果您验证是使用 HTML 4.01 过渡,则不会出现该错误,并且表格 html 在 html5 中没有发生太大变化。
报告它可能是一个好主意
我在动态创建的表上遇到了同样的错误。根据输入,某些行是否显示。像这样:
不会导致错误:
<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 只有单个单元格就像告诉访问我的人在没有任何路口的街道上右转,相信他们会继续直行。他们不会。相反,他们会因为寻找不存在的东西而挂断电话。也许不是一个完全准确的类比,但你可以想象一个愚蠢的浏览器在寻找你告诉它存在但不存在的东西时会产生显示错误。不应期望浏览器“认为”您的代码可能与您编写代码的方式不同。
只是修复了 Alohci 答案的链接。
https://w3c.github.io/html/single-page.html#forming-a-table
如果您启动表格 - 它会修复验证列错误。如果您的表格有 8 列,那么第一行必须有 8 个元素,如果您只是启动,您不想看到这些元素。css 元素是:tr.Init{border:none;} 和以下 8 列表的第一行。结果是 - 您看不到第一行并且您的验证错误已修复。