Javascript 在动态填充选择标记中不获取任何选项

Javascript 在动态填充选择标记中不获取任何选项,javascript,html,jquery,Javascript,Html,Jquery,我需要以编程方式用数组的值填充select下拉元素。 我读过很多类似的问题,但找不到解决我问题的答案 我有以下几点 常数数据={ 参数:[{name:myparam,类型:enum,值:[5,10,15]} ] } $.eachdata.parameters,functioni,parameter{ //参数={name:myparam,类型:enum,值:[5,10,15]} 设param_form_id=parameter.name+_id; 让参数_enum_array=新数组; //将

我需要以编程方式用数组的值填充select下拉元素。 我读过很多类似的问题,但找不到解决我问题的答案

我有以下几点

常数数据={ 参数:[{name:myparam,类型:enum,值:[5,10,15]} ] } $.eachdata.parameters,functioni,parameter{ //参数={name:myparam,类型:enum,值:[5,10,15]} 设param_form_id=parameter.name+_id; 让参数_enum_array=新数组; //将所有值推送到参数_enum_数组[] $.eachparameter.values、functionj、enumvalue{ 参数_enum_array.pushenumvalue; }; 让我们选择_id=parameter.name+_sel_id; //使用空的select元素创建表单 $, { id:param_form_id, html:“提交” }.appendTo`.params_container`; //添加选项以选择图元 var期权=; 对于变量i=0;i位于.appendToselect_id的选择器缺少代码问题,可以使用.appendTo+select_id修复该问题。 这里还有id:param_form_id param_form_id未定义

我建议按如下所示执行此操作,使用和Array.map以尽量减少实际的DOM操作:

常数数据=[{ 姓名:myparam, 类型:枚举, 数值:[5,10,15] }, { 姓名:myparam1, 类型:枚举, 数值:[5,10,15] }]; 常量形式=[]; $.eachdata,functioni,参数{ const options=parameter.values.mapvalue=>`${value}`.join; 常数htmlTempate=` ${options} 提交 ` 表格.推送${ id:'param_form_id'+i, html:htmlTempate }; }; $'.params_container'.appendforms;
如果将新创建的元素对象存储在变量中,则可以在插入dom之前使用jQuery对其进行操作

在这里,我使用以下方法创建选项:

const $opts = parameter.values.map(v => new Option(v,v));
然后将其附加到变量内部的select。完成所有操作后,将表单附加到DOM

常数数据={ 参数:[{name:myparam,类型:enum,值:[5,10,15]} ] } $.eachdata.parameters,functioni,参数{ 让我们选择_id=parameter.name+_sel_id; //分配给变量的新表单元素 常量$form=${ id:'param_form_id'+i, html:“提交” }; //选项元素的映射数组 const$opts=parameter.values.mapv=>newoptionv,v; //在“选择”中插入选项 $form.find+select_id.追加$opts //附加整个表单,包括选项 $`.params_container`.追加$form; };
我给你编了一段。请添加数据对象当您这样做时,我们可以为您找到一个短得多的脚本我从未见过选项自动关闭选项标记问题是什么?你能发布生成的html吗?缩短此过程的一种方法是将变量名参数_enum_数组更改为类似于值的值。下面是一个简短的干净代码示例,您希望使用它@jqueryHtmlCSS这是有效的jQuery。感谢您抽出时间Tj。我将另一个答案标记为解决方案,因为它更紧凑:-@user123892,看起来紧凑,但性能不好。它对每个表单进行多个DOM更新。我的答案包含为可读性而扩展的字符串和对象。它们也不能制成1行。