我想这个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;
}

当前回答

最简洁直观的方式是:

var selectElement = document.getElementById('ageselect'); For (var age = 12;年龄<= 100岁;年龄+ +){ selectElement。添加新选项(年龄)); } 您的年龄:<select id="ageselect"><option value="">Please select</option></select> .

你也可以区分名称和值,或者在列表开头添加附加参数到使用的函数: HTMLSelect Element。添加(项目之前,[]); new Option(text, value, defaultSelected, selected);

其他回答

我不建议在循环中进行DOM操作——这在大型数据集中成本很高。相反,我会这样做:

var elMainSelect = document.getElementById('mainSelect');

function selectOptionsCreate() {
  var frag = document.createDocumentFragment(),
    elOption;
  for (var i=12; i<101; ++i) {
    elOption = frag.appendChild(document.createElement('option'));
    elOption.text = i;
  }
  elMainSelect.appendChild(frag);
}

你可以在MDN上阅读更多关于DocumentFragment的内容,以下是它的要点:

它被用作Document的轻量级版本,用于存储 像标准文档一样由节点组成的文档结构。 关键的区别在于,因为文档片段不是 实际DOM的结构,对片段所做的更改不会影响 文档,导致回流,或招致任何性能影响 在进行更改时发生。

当您创建一个新的Option对象时,有两个参数要传递:第一个是您想要的文本 出现在列表中,第二个是要分配给该选项的值。

var myNewOption = new Option("TheText", "TheValue");

然后你只需将这个Option对象赋值给一个空数组元素,例如:

document.theForm.theSelectObject.options[0] = myNewOption;

通常你有一个相关记录的数组,我发现用这种方式填充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('');

最简洁直观的方式是:

var selectElement = document.getElementById('ageselect'); For (var age = 12;年龄<= 100岁;年龄+ +){ selectElement。添加新选项(年龄)); } 您的年龄:<select id="ageselect"><option value="">Please select</option></select> .

你也可以区分名称和值,或者在列表开头添加附加参数到使用的函数: HTMLSelect Element。添加(项目之前,[]); new Option(text, value, defaultSelected, selected);

For(设I = 12;我< 101;我+ +){ 让HTML = "" HTML += ' <选项值= " ${我}" > ${我}> < /选项 ` mainSelect。innerHTML += html } const mainSelect = document.getElementById("mainSelect") 这是一种非常简单易懂的解决问题的方法!希望它能起作用:)