Javascript innerHTML是否跨不同的行工作?

Javascript innerHTML是否跨不同的行工作?,javascript,Javascript,我试图使用innerHTML从用户的输入创建一个下拉列表,但它不起作用。下面的代码输出一个空下拉列表。问题似乎是将和写入拆分在不同的行上。如果我将和放在for循环中,它会工作,但会为每个项目创建一个单独的下拉列表。有什么想法吗 document.getElementById('text').innerHTML += "<select>"; for (ddNum=0; ddNum <= ddWanted; ddNum++) { var ddIDvar = document.get

我试图使用innerHTML从用户的输入创建一个下拉列表,但它不起作用。下面的代码输出一个空下拉列表。问题似乎是将
写入拆分在不同的行上。如果我将
放在for循环中,它会工作,但会为每个项目创建一个单独的下拉列表。有什么想法吗

document.getElementById('text').innerHTML += "<select>";
for (ddNum=0; ddNum <= ddWanted; ddNum++)
{
var ddIDvar = document.getElementById('inputID' + ddNum);
document.getElementById('text').innerHTML += "<option>" + ddIDvar.value + "</option>";
}
document.getElementById('text').innerHTML += "</select><br />";
document.getElementById('text').innerHTML+=“”;

对于(ddNum=0;ddNum,浏览器可能正在咀嚼您正在添加的HTML,试图通过添加结束标记使其“正确”。与其反复将不完整的标记集附加到.innerHTML并强制进行可能昂贵的回流/重画,不如将您的选择构建为字符串,然后在完成后将其附加到.innerHTML:

var sel = '<select>';
for (ddNum ...) {
   sel += '<option>....</option>';
}
sel += '</select>';
.... .innerHTML += sel;
var sel='';
用于(ddNum…){
sel+='..';
}
sel+='';
..…innerHTML+=sel;

浏览器可能正在咀嚼您正在添加的HTML,试图通过添加结束标记使其“正确”。与其重复将不完整的标记集附加到.innerHTML并强制进行可能昂贵的回流/重画,不如将您的选择构建为字符串,然后在完成后将其附加到.innerHTML:

var sel = '<select>';
for (ddNum ...) {
   sel += '<option>....</option>';
}
sel += '</select>';
.... .innerHTML += sel;
var sel='';
用于(ddNum…){
sel+='..';
}
sel+='';
..…innerHTML+=sel;

您不能将
innerHTML
设置为HTML标记的一半。
如果您尝试,浏览器将为您修复它,这不是您想要的


您需要组装一个完整的HTML字符串,然后设置
innerHTML

您不能将
innerHTML
设置为HTML标记的一半。
如果您尝试,浏览器将为您修复它,这不是您想要的


您需要组装一个完整的HTML字符串,然后设置
innerHTML

每次更改innerHTML的值时,都会触发回流,这对性能不好。相反,请提前构建HTML字符串并编写innerHTML一次:

var s = document.getElementById('text').innerHTML + "<select>";
for (ddNum=0; ddNum <= ddWanted; ddNum++)
{
    var ddIDvar = document.getElementById('inputID' + ddNum);
    s += "<option>" + ddIDvar.value + "</option>";
}
document.getElementById('text').innerHTML = s + "</select><br />";
var s=document.getElementById('text').innerHTML+“”;

对于(ddNum=0;ddNum,每次更改innerHTML的值时都会触发回流,这对性能不好。相反,请提前构建HTML字符串并编写innerHTML一次:

var s = document.getElementById('text').innerHTML + "<select>";
for (ddNum=0; ddNum <= ddWanted; ddNum++)
{
    var ddIDvar = document.getElementById('inputID' + ddNum);
    s += "<option>" + ddIDvar.value + "</option>";
}
document.getElementById('text').innerHTML = s + "</select><br />";
var s=document.getElementById('text').innerHTML+“”;
对于(ddNum=0;ddNum)