HTML验证错误 - 由元素th建立的范围4 ... 5中的表列没有以单元格开头的单元格

时间:2014-12-10 18:29:13

标签: html

编辑:我使用了W3验证器。 当我尝试验证我的HTML代码时遇到问题。我试图谷歌答案,但我似乎无法找到解决方法。如果有人能够向我解释导致错误的原因以及如何解决错误,我将非常高兴。 错误消息:第80行,第19列:由元素th建立的范围4 ... 5中的表列没有以单元格开头的单元格。             th colspan =“6”Köpt不信任/
以下是与该表相关的代码:

        <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>

感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

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

在您的情况下,真正的问题是您声明了六列,但第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>

答案 1 :(得分:0)

从语义上讲,除非<th>位于<th>,否则使用<th>(表示行/列标题)后面应跟有一个或多个<thead> s。我会使用<td colspan="6">Köpt utrustning</td>代替<th>,只要将其设为粗体,如果这就是你想要的效果。