javascript - 在 JavaScript 中从数组中创建复选框
问题描述
我有一个数组,现在是硬编码的,我正在尝试根据我拥有的数组元素创建复选框。
var features = document.getElementById('features')
var options = ["Col1", "Col2", "Col3", "Col4", "Col5"];
for(var i = 0; i < options.length; i++) {
var x = document.createElement("INPUT");
x.setAttribute("type", "checkbox");
x.innerHTML = options[i];
x.name = options[i];
features.appendChild(x);
}
<label>Select Target</label>
<select name="targetColumn" id="selectTargetOptions">
<option value="selectcard">Select Target</option>
</select>
<br><br>
<label>All Features:</label>
<div id='features'>
</div>
<br>
<button id="btn-features">Select All</button>
<br><br>
<button id="btn-remove">Remove All</button>
我看不到复选框的名称作为数组的元素。
请问有什么帮助吗?
解决方案
复选框不会自动在它们旁边添加标签。所以你需要<label>
为每个复选框添加标签。在我的代码版本中,我还for
为每个标签添加了属性,以便单击标签将切换它的匹配复选框。
var features = document.getElementById('features')
var options = ["Col1", "Col2", "Col3", "Col4", "Col5"];
for(var i = 0; i < options.length; i++) {
var x = document.createElement("INPUT");
x.setAttribute("type", "checkbox");
x.value = options[i];
x.id = 'checkbox-' + options[i];
var y = document.createElement('LABEL');
y.textContent = options[i];
y.setAttribute('for', x.id);
features.appendChild(x);
features.appendChild(y);
}
<label>Select Target</label>
<select name="targetColumn" id="selectTargetOptions">
<option value="selectcard">Select Target</option>
</select>
<br><br>
<label>All Features:</label>
<div id='features'>
</div>
<br>
<button id="btn-features">Select All</button>
<br><br>
<button id="btn-remove">Remove All</button>
正如 Scott Marcus 所建议的,您也可以选择将您label
的复选框包裹起来以避免使用该for
属性,id.
这是一种方法:
var features = document.getElementById('features')
var options = ["Col1", "Col2", "Col3", "Col4", "Col5"];
for(var i = 0; i < options.length; i++) {
var x = document.createElement("INPUT");
x.setAttribute("type", "checkbox");
x.value = options[i];
var z = document.createElement('SPAN');
z.textContent = options[i];
var y = document.createElement('LABEL');
y.appendChild(x);
y.appendChild(z);
features.appendChild(y);
}
<label>Select Target</label>
<select name="targetColumn" id="selectTargetOptions">
<option value="selectcard">Select Target</option>
</select>
<br><br>
<label>All Features:</label>
<div id='features'>
</div>
<br>
<button id="btn-features">Select All</button>
<br><br>
<button id="btn-remove">Remove All</button>
推荐阅读
- docker - Mac 的 Docker 桌面:绑定到 tcp 端口
- linux - 在 Docker 构建中创建文件
- shell - Jenkins 管道中的 Shell 脚本 cd 命令给出错误“没有这样的文件或目录”
- css - 为什么这个 CSS Grid 孩子需要一个最大高度来启用滚动?
- mongodb - 使用 SpringData MongoDB repository.saveAll() 加载大量数据时如何处理套接字错误连接关闭异常
- datepicker - Jquery datepicker 周末从计算中排除
- image - 使用像素值或整数时的结果差异
- python-3.x - Tensorflow 2.0 中的 LSTM 状态元组
- vue.js - 切换标签后传递道具值
- python - 将参数传递给使用 pvmismatch 的函数:为什么这不起作用?