回到课程

为什么留下 "aaa"?

重要程度: 1

运行下面例子,为什么 table.remove() 没有删除 "aaa" 文本?

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

<script>
  alert(table); // table 应该显示出的样子

  table.remove();
  // 为什么 aaa 依旧在文档中
</script>

HTML 在这个任务中是错误的,这也是造成怪异的原因所在。

浏览器会自动修复它。但 <table> 可能会没有文本:根据 table 的特殊规范,这是允许的。所以浏览器会在 <table> 前面添加 "aaa"

现在当我们移除 table 时,它就被保留下来了。

通过浏览器开发者工具很容易就能在 DOM 找到答案。它显示出 "aaa"<table> 前面。

HTML 标准规范详细描述了对于异常的 HTML 会如何处理,以及浏览器的行为是否合乎规范。