【问题标题】:HTML validation error-Table columns in range 4…5 established by element th have no cells beginning in themHTML 验证错误 - 由元素 th 建立的范围 4…5 中的表列没有以它们开头的单元格
【发布时间】:2014-12-11 03:35:24
【问题描述】:

编辑:我使用了 W3 验证器。 当我尝试验证我的 html 代码时遇到问题。我试图用谷歌搜索答案,但似乎找不到解决方法。如果有人可以向我解释导致错误的原因以及如何解决它,我会很高兴。 错误消息:第 80 行,第 19 列:由元素 th 建立的范围 4…5 中的表列没有以它们开头的单元格。 th colspan="6"Köpt utrustning/th.
这是与该表相关的代码:

        <div id="tabell2Space">
    <div id="tabell2">
    <table>
        <tr>
            <th colspan="6">Köpt utrustning</th>
        </tr>

        <tr>
            <th rowspan="2">Artikelnummer#</th>
            <th rowspan="2">Artikelbild</th>
            <th colspan="3">Beskrivning</th>
            <th>Pris</th>
        </tr>

        <tr>
            <th colspan="3">Frakt, installation, etc</th>
            <th>Kostnad</th>
        </tr>

        <tr>
            <td rowspan="2">1.</td>
            <td rowspan="2"><img alt="Dator" src="Bilder/pryl2.jpg"></td>
            <td colspan="3">IMB Clone computer</td>
            <td>$ 400.00</td>
        </tr>

        <tr>
            <td colspan="3">Frakt, installation, etc</td>
            <td>$ 20.00</td>
        </tr>

        <tr>
            <td rowspan="2">2.</td>
            <td rowspan="2"><img alt="Datorkomponent" src="Bilder/pryl1.jpg"></td>
            <td colspan="3">1GB RAM Module</td>
            <td>$ 50.00</td>
        </tr>

        <tr>
            <td colspan="3">Frakt, installation, etc</td>
            <td>$ 14.00</td>
        </tr>

        <tr>
            <th colspan="6">Köpt utrustning</th>
        </tr>
</table>
</div>
</div>

感谢任何帮助!

【问题讨论】:

  • 产生该错误的原因是什么?你的控制台? alert()?你是通过一些验证器运行它吗?请在您的问题中发布。
  • 抱歉,我正在使用 w3 验证器。

标签: html


【解决方案1】:

表格结构违反了 HTML 表格模型,该模型现已在 HTML5 中正式化,W3C HTML5 验证器会对其进行检查。该模型在 HTML5 规范的第 4.9 章表格数据的第 4.9.12 节Processing model 中进行了描述。这有点技术性,但重点是表格由行和列组成,它们定义了一个槽网格,每个槽必须有一个单元格开始。

在您的情况下,真正的问题是您声明了六列,但第 4 列和第 5 列中的插槽没有从它们开始的单元格。换句话说,可能更有用的方式是,您的表格实际上只有四列(正如@PHJCJO 建议的那样,您可以看到是否在单元格周围添加边框),但是您已经声明了其他内容,就好像第三个真正的列由三列。

解决方法是删除所有执行此操作的colspan="3" 属性,并相应地将colspan="6" 更改为colspan="4"。下面的代码实现了这一点,验证并创建了相同的渲染,除了第三列的宽度,如果需要,应该在 CSS 中设置。为了清楚起见,此处包含边框。

 <div id="tabell2Space">
    <div id="tabell2">
    <table border>
        <tr>
            <th colspan="4">Köpt utrustning</th>
        </tr>

        <tr>
            <th rowspan="2">Artikelnummer#</th>
            <th rowspan="2">Artikelbild</th>
            <th>Beskrivning</th>
            <th>Pris</th>
        </tr>

        <tr>
            <th>Frakt, installation, etc</th>
            <th>Kostnad</th>
        </tr>

        <tr>
            <td rowspan="2">1.</td>
            <td rowspan="2"><img alt="Dator" src="Bilder/pryl2.jpg"></td>
            <td>IMB Clone computer</td>
            <td>$ 400.00</td>
        </tr>

        <tr>
            <td>Frakt, installation, etc</td>
            <td>$ 20.00</td>
        </tr>

        <tr>
            <td rowspan="2">2.</td>
            <td rowspan="2"><img alt="Datorkomponent" src="Bilder/pryl1.jpg"></td>
            <td>1GB RAM Module</td>
            <td>$ 50.00</td>
        </tr>

        <tr>
            <td>Frakt, installation, etc</td>
            <td>$ 14.00</td>
        </tr>

        <tr>
            <th colspan="4">Köpt utrustning</th>
        </tr>
</table>
</div>
</div>

【讨论】:

  • 我想我现在理解了这个错误,它完全消除了错误并且没有改变表格的外观。非常感谢!
【解决方案2】:

在语义上,使用&lt;th&gt;(表示行/列标题)后应跟一个或多个&lt;th&gt;s,除非&lt;th&gt;&lt;thead&gt; 中。我会使用&lt;td colspan="6"&gt;Köpt utrustning&lt;/td&gt; 而不是&lt;th&gt;,如果你想要这样的效果,只需将其设置为粗体即可。

【讨论】:

  • 无论这是否属实,它都没有解决所提出的问题。
  • @JukkaK.Korpela,你明白问题是什么吗?我评论问 what 引发了错误。假设它可能是一些验证器,我的回答是足够合适的。如果 OP 更新了一些不同的东西,我会删除/更新我的答案。
  • 标题是“验证错误”,消息是 W3C HTML5 验证器发出的消息。
  • 如果我从 th 切换到 td 没有区别。问题似乎是colspan,但我不知道为什么它不允许colspan =“6”,它需要覆盖整个表格(它应该是一个横跨整个表格的标题)。
  • @user2495814,它看起来您的桌子只有 4 colspan 宽。我错过了什么吗?
猜你喜欢
  • 2015-01-14
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多