JavaScript 和 DOM : Why "<table>" += "<tr><td></td></tr>" += "</table" doesn't work?

标签 javascript dom

在这两者中,字符串内容是相同的。如果你这样做:

 myDiv.innerHTML += "<table><tr><td>A</td><td>B</td></tr></table>";

您得到一个包含两列的表格。

如果你这样做:

 myDiv.innerHTML += "<table>";
 myDiv.innerHTML += "<tr>";
 myDiv.innerHTML += "<td>A</td>";
 myDiv.innerHTML += "<td>B</td>";
 myDiv.innerHTML += "</tr>";
 myDiv.innerHTML += "</table>";

你只会得到 <table></table>标签。不存在其他标记。

这是因为 JavaScript 将内容的含义更改为对象,所以我们没有将 TD 添加到 Table 对象中吗?为什么会这样?

最佳答案

每次编辑 innerHTML 后,浏览器都会尝试生成一组完整的 HTML DOM 对象。

所以在第一步之后你有:

<table></table>

由于结束标签是通过错误恢复添加的。

然后你尝试

<table></table><tr>

并且由于您不能在表外有表行,因此错误恢复会将其丢弃。

……等等。

关于JavaScript 和 DOM : Why "<table>" += "<tr><td></td></tr>" += "</table" doesn't work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916205/

相关文章:

javascript - 连接集合中所有元素的数组[MongoDB]

javascript - 为什么 JavaScript 函数不起作用?

javascript - 基于 DOM 的脚本

javascript - 通过 TagName 获取属性 - JS

javascript - Firefox 或 JavaScript,计算 DOM

javascript - 将 URL 内容传递给回调的函数

Javascript - 将数字变量拆分为函数

javascript - Node.js 服务器没有收到 AJAX 请求?

javascript - 如何在 typescript 中编写带有 value 或 value[] 参数的泛型函数作为两个参数

javascript - 如何使用 jQuery 将子级 insideText 与用户输入进行匹配