javascript - 通过“名称”而不是“id”定位多个复选框
问题描述
我需要取消选中字段集中所有选中的复选框。我知道如何使用多种getElementById
方法手动完成,但我想使用单个getElementsByName
. 如何更简洁地表达下面的代码?
… else {
document.getElementById("foo").checked = false
document.getElementById("bar").checked = false
document.getElementById("baz").checked = false
}
<fieldset>
<input type=checkbox name=collection id=foo>
<label for=foo>Foo</label>
<input type=checkbox name=collection id=bar>
<label for=bar>Bar</label>
<input type=checkbox name=collection id=baz>
<label for=baz>Baz</label>
</fieldset>
解决方案
您可以通过 获取所有复选框document.querySelectorAll
,并.forEach
用于更改集合中每个复选框的状态。
btn.addEventListener("click", () => {
let checkboxes = document.querySelectorAll('fieldset > input[name="collection"]:checked');
checkboxes.forEach(e => e.checked = false); // for example set other checked state.
});
<fieldset>
<input type=checkbox name=collection id=foo>
<label for=foo>Foo</label>
<input type=checkbox name=collection id=bar checked>
<label for=bar>Bar</label>
<input type=checkbox name=collection id=baz checked>
<label for=baz>Baz</label>
</fieldset>
<button id="btn">Change state</button>
推荐阅读
- python - 腌制 Keras Regressor 模型错误:无法腌制 _thread.RLock 对象
- php - 如何从 Leaflet / OSM 中提取 POI
- java - ChromeDriver 默认下载目录在 ChromeDriver v89,90 中不起作用
- ethereum - 使用 if 语句时如何计算 gas 使用量
- asp.net - 在 ajax 调用中上传到 ASP.NET MVC 网站后出现 http 500 错误
- generics - 实例化具有对变体记录的子类型访问权限的包时出现问题
- mysql - 我想在 laravel 中显示帖子和他们的所有评论
- html - 如何使用 CSS 过渡和 flex wrap 修复不需要的行为?
- reactjs - 在 useEffect 中取消订阅和异步任务
- pine-script - 标签上最大和最小条的日期