为什么留下 "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,并且浏览器的这种行为是正确的。