javascript - 如何使用 DOM 选择器取消选中复选框?
问题描述
我创建了一个 dom 选择器,它在我的应用程序的一部分中基本上将所有复选框作为节点数组:
var checkboxes = document.getElementById("factors").querySelectorAll('input[type=checkbox]');
这将返回一个包含 10 个复选框的节点数组,其中每个节点项如下所示:
>checkbox[0]
><input name="chkVal0" type="checkbox" role="checkbox" aria-checked="true" class="dijitReset dijitCheckBoxInput" data-dojo-attach-point="focusNode" data-dojo-attach-event="ondijitclick:_onClick" value="on" tabindex="0" id="dijit_form_CheckBox_0" checked="checked" style="user-select: none;">
我希望有一个功能可以一次取消选中所有复选框,但我似乎无法使用 dom 选择器来实现这一点。我首先在单个项目上尝试了一些东西,但似乎并没有取消选中该框:
var checkbox_one = checkboxes[0];
//Using jquery and props
$(checkbox_one).prop("checked", "unchecked") //Nothing
//2nd try
$(checkbox_one).prop("checked", false) //Nothing
//3rd try using attr
$(checkbox_one).attr("checked", "uncheck"); //Nothing
$(checkbox_one).attr("checked", false); //Nothing
我已经尝试了一些类似的东西aria-checked = false
,value=off
但似乎没有任何效果。有关如何克服此问题并使用 dom 选择器取消选中框的任何建议?
解决方案
您可以遍历每个复选框NodeList
并将checked
属性设置为false
。
var checkboxes = document.getElementById("factors").querySelectorAll('input[type=checkbox]');
for(const checkbox of checkboxes){
checkbox.checked = false;
}
使用 jQuery,您需要将整个传递NodeList
给 jQuery 函数,或者直接将选择器传递给它。
$(checkboxes).prop('checked', false);
// or
$('#factors input[type=checkbox]').prop('checked', false);
推荐阅读
- python - 带有线程的 Python3 诅咒
- python - Scikit-learn OneHotEncoder 对特征选择的影响
- javascript - 如何使用 lodash 在数组中查找内部数组可能包含其他对象的对象
- php - Dokku:部署 Laravel 应用程序时缺少 PHP 扩展 mbstring
- php - Laravel - 使用数据范围显示数据
- node.js - 我的同步功能不会等待所有子功能完成
- node.js - 在带有 supertest 的 mocha 断言中使用 async await 函数
- java - 保存生成的数组
- symfony - 使用 @ParamConverter 传递不存在的 id 参数时接受空值
- ios - 关闭模式视图时未调用 onDisappear