回到课程

为什么留下 "aaa"?

重要程度: 1

在下面这个示例中,我们调用 table.remove() 从文档中删除表格。

但如果运行它,你就会看到文本 "aaa" 并没有被删除。

这是为什么?

<table id="table">
  aaa
  <tr>
    <td>Test</td>
  </tr>
</table>

<script>
  alert(table); // 表格,就是它应有的样子

  table.remove();
  // 为什么 aaa 还存在于文档中?
</script>

这个题目中的 HTML 是错的。这就是造成怪异现象的原因。

浏览器必须自动修复它。但 <table> 内可能会没有文本:根据规范,只允许特定于表格的标签。所以浏览器把 "aaa" 添加到了 <table> 前面

当我们删除表格后,文本 "aaa" 仍然存在的原因就很明显了吧。

通过使用浏览器开发者工具查看 DOM,就可以轻松地回答这个问题。从浏览器开发者工具中我们可以看到,"aaa"<table> 前面。

HTML 标准规范详细描述了如何处理错误的 HTML,并且浏览器的这种行为是正确的。