javascript - 如何使用 JavaScript 设置多项选择的值
问题描述
为了<input>
使用 JavaScript 设置元素的数据,我们像这样分配该元素的值和名称:
var form = document.createElement("form");
var element = document.createElement("input");
element.value=value;
element.name=name;
在存在属性的情况下<select>
,multiple
如何设置该选择元素的值?例如,我将如何设置以下myselect
元素的值:
<form method="post" action="/post/" name="myform">
<select multiple name="myselect" id="myselect">
<option value="1">option1</option>
<option value="2">option2</option>
...
我试图通过这样做来设置值,myselect.value=[1,2]
但是它不起作用。选择后option1
,option2
我预计它会返回[1,2]
,但它只返回“1”。
解决方案
要以编程方式在多选中设置多个值选项,您需要手动向要选择的元素添加selected
属性。<option>
一种方法如下:
const select = document.getElementById('myselect')
const selectValues = [1, 2];
/* Iterate options of select element */
for (const option of document.querySelectorAll('#myselect option')) {
/* Parse value to integer */
const value = Number.parseInt(option.value);
/* If option value contained in values, set selected attribute */
if (selectValues.indexOf(value) !== -1) {
option.setAttribute('selected', 'selected');
}
/* Otherwise ensure no selected attribute on option */
else {
option.removeAttribute('selected');
}
}
<select multiple name="myselect" id="myselect">
<option value="1">option1</option>
<option value="2">option2</option>
<option value="3">option3</option>
<option value="4">option4</option>
</select>
推荐阅读
- java - Target 不是 JDK 根目录。找不到 Java 可执行文件 jdk 13.0.2 eclipse 2019
- continuous-integration - Bamboo Java 规范、单一管道存储库和多个项目
- windows - 列表框:WM_CHAR 搜索项的时间间隔
- amazon-web-services - 在运行时找不到 AWS Java SDK
- python - 如何对 CSV 文件中的多个列进行分组和求和?
- c++ - OpenCV 库无法读取 .mp4 视频文件来创建 VideoCapture 对象
- php - 如何在 Laravel 中将部门显示为节点
- apache - .htaccess 中的 RewriteRules 不为 cPanel 上的 Drupal 网站重定向
- c# - 匹配两个序列
- reactjs - i18n 在函数中翻译文本