在 innerHTML 中使用 for 循环
Using a for loop within innerHTML
当函数为 运行 时,我想在每个年龄添加一个盒子,里面有单独的盒子。我尝试通过拆分 innerHTML 并在 agebox 部分使用 for 循环来做到这一点,这样它每次都会循环并创建一个新的 age box,而不是每次都创建一个完整的 outerbox,就像你尝试循环整个东西一样。我认为这会起作用,但现在它为每个循环创建了一个年龄框,但它放置在外框外面,我无法弄清楚如何让它在外框内循环。如果我删除循环并只创建一个 innerHTML,那么我手动创建的年龄框位于外部框内,因此我假设 innerHTML 的实际拆分存在问题。提前致谢!!
function Age(gender){
if (gender!==undefined){
el1 = document.getElementById('userdata');
el1.innerHTML += gender +"<br>";
}
el1 = document.getElementById('farespage');
el1.innerHTML += "<div id=\"outerbox\">";
for(var i=13; i<=18; i++){
el1.innerHTML +="<div class=\"agebox\" onclick=\"Relationship('"+i+"')\">"+i+"</div>";
}
el1.innerHTML += "</div><button type=\"button\" onclick=\"goback('Gender')\">back</button>";
}
您需要将输出内容存储为字符串,然后将其附加到DOM。否则,div 将自动关闭。
el1 = document.getElementById('farespage');
output = "<div id=\"outerbox\">"; //initialize output string
//build output string
for(var i=13; i<=18; i++){
output +="<div class=\"agebox\" onclick=\"Relationship('"+i+"')\">"+i+"</div>";
}
output += "</div><button type=\"button\" onclick=\"goback('Gender')\">back</button>";
el1.innerHTML = output; //output to DOM
行
el1.innerHTML += "<div id=\"outerbox\">";
实际上正在生产
<div id="outerbox"></div>
因为大多数浏览器会自动关闭 HTML 标签。
你应该把你所有的 HTML 写入一个字符串缓冲区,然后用一个大的调用附加它;例如:
function Age(gender){
if (gender!==undefined){
el1 = document.getElementById('userdata');
el1.innerHTML += gender +"<br>";
}
el1 = document.getElementById('farespage');
// Magic begins here
var yourHTML = "";
yourHTML += "<div id=\"outerbox\">";
for(var i=13; i<=18; i++){
yourHTML +="<div class=\"agebox\" onclick=\"Relationship('"+i+"')\">"+i+"</div>";
}
yourHTML += "</div><button type=\"button\" onclick=\"goback('Gender')\">back</button>";
el1.innerHTML += yourHTML;
}
这有一个额外的好处,即只触摸 DOM 一次而不是 7 次(这通常是一件好事)。
当函数为 运行 时,我想在每个年龄添加一个盒子,里面有单独的盒子。我尝试通过拆分 innerHTML 并在 agebox 部分使用 for 循环来做到这一点,这样它每次都会循环并创建一个新的 age box,而不是每次都创建一个完整的 outerbox,就像你尝试循环整个东西一样。我认为这会起作用,但现在它为每个循环创建了一个年龄框,但它放置在外框外面,我无法弄清楚如何让它在外框内循环。如果我删除循环并只创建一个 innerHTML,那么我手动创建的年龄框位于外部框内,因此我假设 innerHTML 的实际拆分存在问题。提前致谢!!
function Age(gender){
if (gender!==undefined){
el1 = document.getElementById('userdata');
el1.innerHTML += gender +"<br>";
}
el1 = document.getElementById('farespage');
el1.innerHTML += "<div id=\"outerbox\">";
for(var i=13; i<=18; i++){
el1.innerHTML +="<div class=\"agebox\" onclick=\"Relationship('"+i+"')\">"+i+"</div>";
}
el1.innerHTML += "</div><button type=\"button\" onclick=\"goback('Gender')\">back</button>";
}
您需要将输出内容存储为字符串,然后将其附加到DOM。否则,div 将自动关闭。
el1 = document.getElementById('farespage');
output = "<div id=\"outerbox\">"; //initialize output string
//build output string
for(var i=13; i<=18; i++){
output +="<div class=\"agebox\" onclick=\"Relationship('"+i+"')\">"+i+"</div>";
}
output += "</div><button type=\"button\" onclick=\"goback('Gender')\">back</button>";
el1.innerHTML = output; //output to DOM
行
el1.innerHTML += "<div id=\"outerbox\">";
实际上正在生产
<div id="outerbox"></div>
因为大多数浏览器会自动关闭 HTML 标签。
你应该把你所有的 HTML 写入一个字符串缓冲区,然后用一个大的调用附加它;例如:
function Age(gender){
if (gender!==undefined){
el1 = document.getElementById('userdata');
el1.innerHTML += gender +"<br>";
}
el1 = document.getElementById('farespage');
// Magic begins here
var yourHTML = "";
yourHTML += "<div id=\"outerbox\">";
for(var i=13; i<=18; i++){
yourHTML +="<div class=\"agebox\" onclick=\"Relationship('"+i+"')\">"+i+"</div>";
}
yourHTML += "</div><button type=\"button\" onclick=\"goback('Gender')\">back</button>";
el1.innerHTML += yourHTML;
}
这有一个额外的好处,即只触摸 DOM 一次而不是 7 次(这通常是一件好事)。