javascript - 如何在不使用事件监听器的情况下检查单击的元素?
问题描述
我有一个输入单选按钮列表,总共 25 个,具有以下 html 结构:
<div class="options-list nested">
<div class="field choice admin__field admin__field-option">
<input type="radio" class="radio admin__control-radio required" name="options[15]" id="options_15_2" value="78">
<label class="label admin__field-label" for="options_15_2">
<span>1</span>
</label>
</div>
<div class="field choice admin__field admin__field-option">
<input type="radio" class="radio admin__control-radio required" name="options[16]" id="options_16_2" value="79">
<label class="label admin__field-label" for="options_16_2">
<span>2</span>
</label>
</div>
<div class="field choice admin__field admin__field-option">
<input type="radio" class="radio admin__control-radio required" name="options[17]" id="options_17_2" value="80">
<label class="label admin__field-label" for="options_17_2">
<span>3</span>
</label>
</div>
...
</div>
如何在不添加 25 个事件侦听器的情况下检查哪个输入被检查 - 每个输入一个?以及如何检查每个输入事件?
document.querySelector('#options_16_2').checked;
这基本上是我需要的,但更普遍。
解决方案
它们的容器都是.options-list
,因此您可以使用选择器.options-list input:checked
来选择已检查的输入,这些输入是具有options-list
类的元素的后代:
document.querySelector('button').addEventListener('click', () => {
console.log(
[...document.querySelectorAll('.options-list input:checked')]
.map(input => input.value)
);
});
<div class="options-list nested">
<div class="field choice admin__field admin__field-option">
<input type="radio" class="radio admin__control-radio required" name="options[15]" id="options_15_2" value="78">
<label class="label admin__field-label" for="options_15_2">
<span>1</span>
</label>
</div>
<div class="field choice admin__field admin__field-option">
<input type="radio" class="radio admin__control-radio required" name="options[16]" id="options_16_2" value="79">
<label class="label admin__field-label" for="options_16_2">
<span2</span>
</label>
</div>
<div class="field choice admin__field admin__field-option">
<input type="radio" class="radio admin__control-radio required" name="options[17]" id="options_17_2" value="80">
<label class="label admin__field-label" for="options_17_2">
<span>3</span>
</label>
</div>
</div>
<button>check</button>
推荐阅读
- matlab - rlocus() - MATLAB 2018a 中没有足够的输入参数
- python - 使用树冠的 pyspark Py4J 错误:PythonAccumulatorV2([class java.lang.String, class java.lang.Integer, class java.lang.String]) 不存在
- html - Html5 CSS表格边框在IE 11中不可见
- javascript - 如何修复自定义 SUMIF 函数的多维数组中的列引用?
- c# - 托管在 Linux 上的 Visual Studio 远程调试应用程序 - 无法枚举特定进程中运行的 CoreCLR 实例
- c# - 防止内容被复制
- python - Pandas 基于另外两个“子”帧创建数据帧
- mysql - 如何在 Sequelize 模型中定义索引?
- gatsby - Gatsby 入门,在“查看源代码”中找不到 html 标签
- ruby - 访问哈希数组中的每个键