【问题标题】:Help with HTML validation error: Table column has no cells beginning in it帮助解决 HTML 验证错误:表格列中没有以开头的单元格
【发布时间】:2010-02-18 23:13:02
【问题描述】:

请帮助我解决this 验证错误。我不明白这意味着什么,或者我的 HTML 不符合标准。

我会在这里重新发布它,因为希望我会修复它并且该链接将不再有效:

由元素 td 建立的表格第 2 列没有以它开头的单元格。

…="tooltip_table"><tr><td colspan="2">20 yd range</td></tr><tr><td colspan="2"
                                     ↑

【问题讨论】:

    标签: validation html html-validation


    【解决方案1】:

    当您说colspan="2" 时,该列应该跨越两列。我的猜测是,在able 的其他任何地方都没有定义第二列,因此使colspan="2" 不可能(并且不必要)。

    我在spec 中找不到任何明确表示这是非法的内容。也许该规范中引用的表格计算算法与 4.01 不同,但在我的时区尝试解决这个问题为时已晚:)

    但是,我发现错误消息太完美了,不可能是一个彻头彻尾的错误。

    由元素 td 建立的表第 2 列没有以它开头的单元格。

    通过使用colspan="2",您暗示存在第二列,在这种情况下不存在。常识告诉我,唠叨是正确的。

    也许有人可以对此有所了解......或者它确实是一个错误。

    【讨论】:

    • 但据我所知,这并不违法。你有任何消息来源说它是非法的吗?
    • 该表格不是文档中唯一的一个。但是,只有该表的标记出错。
    • @Glex 我没看到,如果这是真的那么它一定是一个错误。
    • 我对 colspan 也有同样的错误,所以我将它从 colspan="3" 更改为 colspan="2" 并且错误消失了。
    【解决方案2】:

    HTML 5.2 草稿:第 4.9.12.1 节形成表格

    http://w3c.github.io/html/tabular-data.html#forming-a-table

    第 22 步:如果表中的行或列仅包含没有锚定单元格的槽,则这是一个表模型错误。

    【讨论】:

    • 我明白了。这似乎是答案。
    【解决方案3】:

    我认为这是一个错误,并且仍未修复。考虑this example page 并通过 W3C 验证器运行它。它给出了“由元素 td 建立的表第 3 列没有开始的单元格。”的错误,但每个表有 4 个单元格/列,并且在第二个单元格上调用 2 的“colspan”。

    【讨论】:

    • 另外,为了记录,下一个表格单元格——我用默认的“display:hidden”尝试了它,但我没有尝试过;在每种情况下,都会出现错误,因此单元格的 CSS 显示(隐藏或可见)不是导致此错误的原因。我对此进行了四次检查。
    • 另外,我已将此错误添加到 Validator.nu Bugzilla 列表中:link
    • 我想我们已经弄清楚了。在使用 colspan 之前,需要另一行完整的单元格计数。 HTML5 发现了错误,而以前的文档类型让它滑动。
    【解决方案4】:

    看起来像是 HTML5 验证器的问题。 如果您验证是使用 HTML 4.01 过渡,则不会出现该错误,并且表格 html 在 html5 中没有发生太大变化。

    http://validator.w3.org/check?uri=http://www.wowpanda.net/s9712&charset=(detect+automatically)&doctype=HTML+4.01+Transitional&ss=1&outline=1&group=0&verbose=1&user-agent=W3C_Validator/1.654

    举报可能是个好主意

    【讨论】:

    • HTML 5 和 4.01 是完全不同的野兽,一个应用与另一个不同的规则集这一事实,即使它可能,也不一定是一个“错误”。如果没有更多证据,我认为不需要 b-word :)
    • 点了。但是,在发布答案之前,我阅读了以下内容:w3.org/TR/html5/tabular-data.html 而且没有任何证据表明
      结构发生了如此大的变化。让我们称之为问题,因为我们不确定它是一个错误:)
    • @Glex 我刚读完同一份文档回来 :) 里面确实没有,但对我来说,错误消息太有意义了,不能成为一个错误。好吧,我们会看到,如果提交报告,我会很想知道报告的结果。
    • Henri Sivonen 的验证器也这么说,所以这会是两个独立验证器的错误吗? (他们独立的,不是吗?)html5.validator.nu/?doc=http%3A%2F%2Fwww.wowpanda.net%2Fs9712
    • @Marcel - 我认为他们是一回事。
    【解决方案5】:

    我在动态创建的表上遇到了同样的错误。根据输入,某些行是否显示。像这样:

    不会出错:

    <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 只有单个单元格就像告诉访问我的人在没有任何路口的街道上右转,相信他们会继续直行。他们不会。相反,他们会因为寻找不存在的东西而挂断电话。也许不是一个完全准确的类比,但你可以想象一个愚蠢的浏览器在寻找你告诉它存在但不存在的东西时会产生显示错误。不应期望浏览器“认为”您的代码可能与您编写代码的方式不同。

    【讨论】:

      【解决方案6】:

      只是修复了 Alohci 答案的链接。

      https://w3c.github.io/html/single-page.html#forming-a-table

      1. 如果表中的行或列仅包含没有锚定单元格的槽,则这是一个表模型错误。

      【讨论】:

        【解决方案7】:

        这个帖子有点老了,但我把这个贴给任何碰到它的人。

        使用标签定义每一列会删除消息,并为 colspan 提供相关的内容。

        更多信息在答案中:Why is colspan not applied as expected

        【讨论】:

          【解决方案8】:

          如果您启动表格 - 它会修复验证列错误。 如果您的表格有 8 列,那么第一行必须有 8 个元素,如果您只是启动您不想看到这些元素。 css元素是: tr.Init{border:none;} 以及以下 8 列表的第一行。 结果是 - 您看不到第一行并且您的验证错误已修复。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-06-13
            • 1970-01-01
            • 2010-11-28
            • 1970-01-01
            • 1970-01-01
            • 2014-01-22
            • 2011-02-17
            相关资源
            最近更新 更多