javascript - innerHTML 可以跨不同行工作吗?

标签 javascript

我尝试使用innerHTML 根据用户的输入创建一个下拉列表,但它不起作用。下面的代码输出一个空的下拉列表。问题似乎是 split <select><option>写在单独的行上。如果我输入 <select></select>在 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 />";

最佳答案

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

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

关于javascript - innerHTML 可以跨不同行工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848119/

相关文章:

javascript - 取消除最后一个事件之外的所有事件,

Javascript多维数组 undefined object 错误

javascript - 显示多个标记、变量和数组问题

javascript - 使用 HTML Partial 无限加载

javascript - 在选中单选按钮之前禁用输入字段 (HTML)

javascript - 隐藏滚动条在 Mozilla Firefox 中不起作用

javascript - 为什么我的页面在刷新期间在 Chrome 中触发 "ready"事件?

Javascript URL 验证正则表达式

javascript - swagger-无法识别的响应类型;将内容显示为文本

JavaScript 捕获事件