2

このテーブルを追加するまで、xhtml トランジショナル用に Web ページを検証しました (以下を参照)。それ以来、検証されず、「

ドキュメント タイプは、ここで要素「tfoot」を許可しません<tfoot>

上記の要素は、許可されていないコンテキストで見つかりました。これは、「head」内ではなく「body」セクション内の「style」要素など、誤ってネストされた要素があるか、2 つの要素が重なっている (これは許可されていません) ことを意味する可能性があります。

このエラーの一般的な原因の 1 つは、HTML ドキュメントでの XHTML 構文の使用です。暗黙的に閉じられた要素に関する HTML の規則により、このエラーはカスケード効果を生み出す可能性があります。たとえば、HTML ドキュメントの「head」セクションで「meta」と「link」に XHTML の「自己終了」タグを使用すると、パーサーが「head」セクションの終わりと「body」セクションの始まりを推測する可能性があります。 " セクション ("link" と "meta" は許可されていないため、エラーが報告されています)。

何が起こっているかについてのアイデアはありますか?開いているタグと閉じていないタグを確認しましたが、何も見つからなかったので、他に何が間違っているのかわかりません。

<table>
<caption>
My first table, Anna
</caption>
<thead>
<tr>
<th>
June
</th>
<th>
July
</th>
<th>
August
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
 Data 1
</td>
<td>
Data 2
</td>
<td>
 Data 3
</td>
<td>
Data 4
 </td>
 </tr>
 <tr>
 <td>
   Data a
  </td>
   <td>
 Date b
</td>
<td>
Data c
</td>
<td>
Data d
</td>
</tr>
<tfoot>
<tr>
<td>
Result1
</td>
</tr>
</tfoot>
</tbody>
</table>
4

2 に答える 2

13

<tfoot>テーブルの最後に があります。と の間にある必要があり<thead>ます<tbody>。下部に表示されますが、上部にコード化されています。元のアイデアの 1 つは、大きなテーブルが読み込まれると、見出しとフッターがすばやく表示され、残りが埋められるというものでした (特に、本文がそれらの間でスクロール可能である場合に便利です)。実際にはそのようにはうまくいきませんでしたが、それを知っていればより理にかなっています。

DTDには次のように記載されています。

<!ELEMENT table (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

つまり、任意captionの 、次にゼロ以上のcolまたはcolgroup、次に任意theadの 、次に任意tfootの 、次に少なくとも 1 つのtbodyまたはtrです。

更新: HTML 5 では、最初のテーブル(または a にない最初のテーブル、つまり単一の implicit<tfoot>のテーブル) の前ではなく、テーブルの最後にを配置できるようになったことに注意してください。そのため、問題のコードは有効と見なされます。古いアプローチもまだ有効であり、おそらくお勧めです。<tbody><tr><thead><tfoot><tbody><tbody>

于 2010-08-17T14:38:49.520 に答える
2

tfoot要素は、次のようにtbody要素の外側にある必要があります。

<table>
<caption>
My first table, Anna
</caption>
<thead>
<tr>
<th>
June
</th>
<th>
July
</th>
<th>
August
</th>
</tr>
</thead>
<tfoot>
<tr>
<td>
Result1
</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>
 Data 1
</td>
<td>
Data 2
</td>
<td>
 Data 3
</td>
<td>
Data 4
 </td>
 </tr>
 <tr>
 <td>
   Data a
  </td>
   <td>
 Date b
</td>
<td>
Data c
</td>
<td>
Data d
</td>
</tr>
</tbody>

これは、それを必要とする人のための正しい入れ子の小さな例です。

<table>
    <caption></caption>
    <thead>
        <tr>
            <th></th>
        </tr>
    </thead>
    <tfoot>
         <tr>
             <td></td>
         </tr>
    </tfoot>
    <tbody>
         <tr>
             <td></td>
         </tr>
    </tbody>
</table>
于 2010-08-17T14:49:49.667 に答える