我想这个javascript创建选项从12到100在一个选择id="mainSelect",因为我不想手动创建所有的选项标签。你能给我一些建议吗?谢谢
function selectOptionCreate() {
var age = 88;
line = "";
for (var i = 0; i < 90; i++) {
line += "<option>";
line += age + i;
line += "</option>";
}
return line;
}
通常你有一个相关记录的数组,我发现用这种方式填充select很简单,而且相当声明性:
selectEl.innerHTML = array.map(c => '<option value="'+c.id+'">'+c.name+'</option>').join('');
这将取代现有的选项。
你可以使用selectEl。insertAdjacentHTML (afterbegin, str);把它们加到最上面。
和selectEl。insertAdjacentHTML (beforeend, str);将它们添加到列表的底部。
兼容IE11的语法:
array.map(function (c) { return '<option value="'+c.id+'">'+c.name+'</option>'; }).join('');
我要避免的一件事是在循环中执行DOM操作,以避免重复地重新呈现页面。
var firstSelect = document.getElementById('first select elements id'),
secondSelect = document.getElementById('second select elements id'),
optionsHTML = [],
i = 12;
for (; i < 100; i += 1) {
optionsHTML.push("<option value=\"Age" + i + "\">Age" + i + "</option>";
}
firstSelect.innerHTML = optionsHTML.join('\n');
secondSelect.innerHTML = optionsHTML.join('\n');
Edit:删除了该函数,以显示如何将已构建的html分配给另一个选择元素-从而通过重复函数调用避免不必要的循环。