繁体   English   中英

HTML 使用函数来编写<options>表单内的选择

[英]HTML using a function to write the <options> of a select inside a form

所以我有一个非常复杂的表单,其中包含可能重复大约 300 次的相同选项的选择。 以下是一个非常精简的示例。

<select name="HelmAtt1">
<option value=" | | ">Choose Here</option>
<option value="toughness_pts|implicit_toughness_pts_2|AttributeFlatInt">Toughness</option>
<option value="agility_pts|ar_agility_pts_1|AttributeFlatInt">Agility</option>
</select><input type="number" name="Ha1val" value="0"><br>

这样做显然是代码密集型的,并且不容易编辑。 是否可以创建一个函数来为我显示选择中的选项,以便我最终得到类似这两个选项?

<select name="HelmAtt1">
printHTML();
</select><input type="number" name="Ha1val" value="0"><br>

<script>
function printHTML()
{
<option value=" | | ">Choose Here</option>
<option value="toughness_pts|implicit_toughness_pts_2|AttributeFlatInt">Toughness</option>
<option value="agility_pts|ar_agility_pts_1|AttributeFlatInt">Agility</option>
}
</script>
printHTML(HelmAtt1);
<input type="number" name="Ha1val" value="0"><br>

<script>
function printHTML(val)
{
<select name="val">
<option value=" | | ">Choose Here</option>
<option value="toughness_pts|implicit_toughness_pts_2|AttributeFlatInt">Toughness</option>
<option value="agility_pts|ar_agility_pts_1|AttributeFlatInt">Agility</option>
</select>
}
</script>

我不确定它是否可能,我发现的任何研究都没有具体说明这个确切的问题或没有解决问题,所以我在这里。

恕我直言,您应该在渲染模板时在后端层执行此操作,但这里有一个前端解决方案:

 function addOptions(classname) { let elements = document.getElementsByClassName(classname); for (let i=0; i<elements.length; i++){ let option = document.createElement('option'); option.innerText = 'your option'; option.value = 'your value'; elements[i].appendChild(option); } } addOptions('foo');
 Foo <select class="foo"></select> Bar <select class="foo"></select> Baz <select class="foo"></select>


  
 
  
  
  
    <html>
    <body>
    <select name="HelmAtt1" id="select">
    
    </select>
    
    <script>
    var html = '<option value="">default</option>';
    for (var i = 0; i<10; i++) 
    {
    html += '<option value="' + i + '"';
    				
    html += '>' + i + '</option>';
    			
    }
    
    document.getElementById('select').innerHTML=html;
    
    </script>
    
    </body>
    </html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM