DOM 乱序编辑
DOM edits out of order
我有一个向我的页面添加表单的功能:
var board = document.getElementById("board");
board.innerHTML += "<form id='" + arguments[0] + "'>";
for (var i = 1; i < arguments.length; i++) {
board.innerHTML += "<input type='";
var variable = arguments[i];
board.innerHTML += variable.val.constructor.name + "' name='";
board.innerHTML += variable.name + "'";
board.innerHTML += "></input>";
}
board.innerHTML += "</form>";
console.log(document.getElementById("board").innerHTML);
对于每个参数(除了表单的 ID),它都会向表单添加一个项目。
检查此函数产生的 HTML,循环似乎在行 board.innerHTML += "</form>"
之后 运行。 console.log
输出如下:
<form id="example_name"></form>Number' name='x'>
这是什么原因?可变参数是异步执行的还是什么?
您不能仅将 HTML 元素的一部分附加到 innerHTML
值,因为浏览器 立即 尝试解析它并将忽略它任何格式错误。
将内容累积到一个简单的 JavaScript 变量中,然后在完成所有操作后设置 .innerHTML
。
我会构建字符串,然后将其添加到 innerHTML。
var board = document.getElementById("board");
var html = '';
html += "<form id='" + arguments[0] + "'>";
for (var i = 1; i < arguments.length; i++) {
html += "<input type='";
var variable = arguments[i];
html += variable.val.constructor.name + "' name='";
html += variable.name + "'";
html += "></input>";
}
html += "</form>";
board.innerHTML += html;
变量不会异步执行,但向 DOM 添加部分元素会导致问题。
我有一个向我的页面添加表单的功能:
var board = document.getElementById("board");
board.innerHTML += "<form id='" + arguments[0] + "'>";
for (var i = 1; i < arguments.length; i++) {
board.innerHTML += "<input type='";
var variable = arguments[i];
board.innerHTML += variable.val.constructor.name + "' name='";
board.innerHTML += variable.name + "'";
board.innerHTML += "></input>";
}
board.innerHTML += "</form>";
console.log(document.getElementById("board").innerHTML);
对于每个参数(除了表单的 ID),它都会向表单添加一个项目。
检查此函数产生的 HTML,循环似乎在行 board.innerHTML += "</form>"
之后 运行。 console.log
输出如下:
<form id="example_name"></form>Number' name='x'>
这是什么原因?可变参数是异步执行的还是什么?
您不能仅将 HTML 元素的一部分附加到 innerHTML
值,因为浏览器 立即 尝试解析它并将忽略它任何格式错误。
将内容累积到一个简单的 JavaScript 变量中,然后在完成所有操作后设置 .innerHTML
。
我会构建字符串,然后将其添加到 innerHTML。
var board = document.getElementById("board");
var html = '';
html += "<form id='" + arguments[0] + "'>";
for (var i = 1; i < arguments.length; i++) {
html += "<input type='";
var variable = arguments[i];
html += variable.val.constructor.name + "' name='";
html += variable.name + "'";
html += "></input>";
}
html += "</form>";
board.innerHTML += html;
变量不会异步执行,但向 DOM 添加部分元素会导致问题。