为什么innerHTML会重新排列HTML?

kb5ga3dv  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(179)

下面是我的HTML:

<template id="team-members">

        <h3 style="text-align: center;">
            <span style="background-color: rgb(255, 170, 0);">
                <font color="#0000ff">[[TITLE]]</font>
            </span>
        </h3>

        <table class="[[ITEM-CLASS]]">
            <colgroup>
                <col class="pic" width="30%" />
                <col />
            </colgroup>
            <tbody>
                <!-- CONTAINER FOR ITEMS -->
                <span data-template="team-member" data-records="[[RECORDS]]"></span>
            </tbody>
        </table>

    </template>

Javascript:

const header = document.querySelector("template#team-members");
const myHTML = header.innerHTML;

输出:

<h3 style="text-align: center;">
            <span style="background-color: rgb(255, 170, 0);">
                <font color="#0000ff">[[TITLE]]</font>
            </span>
        </h3>
        <span data-template="team-member" data-records="[[RECORDS]]"></span><table class="[[ITEM-CLASS]]">
            <colgroup>
                <col class="pic" width="30%">
                <col>
            </colgroup>
            <tbody>
                <!-- CONTAINER FOR ITEMS -->
                
            </tbody>
        </table>

如您所见,包含属性data-template="team-member"的span被移动到了另一行。
如何修复?

nkkqxpd9

nkkqxpd91#

  • 另一位用户友好地在评论中发布了这个答案。*

因为您的HTML是无效的,浏览器会尽力理解它。<tbody>不允许有<span>标签作为直接子元素。它只允许零个或多个<tr>元素。

相关问题