使用 D3 选中/取消选中复选框
checkbox check/uncheck using d3
我在使用 d3 选择时难以选中和取消选中复选框。以下代码似乎不起作用。我希望在按下"选中"时选中所有复选框,并在按下"取消选中"时取消选中所有复选框。
<!DOCTYPE html>
<meta charset="utf-8">
<body>
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<button type='button' onclick='checkAll()'>Check</button>
<button type='button' onclick='uncheckAll()'>Uncheck</button>
<script src="http://d3js.org/d3.v2.min.js?2.10.0"></script>
<script>
function checkAll(){
d3.selectAll('input').attr('checked','true');
}
function uncheckAll(){
d3.selectAll('input').attr('checked','false');
}
</script>
</body>
使用 property()
而不是 attr()
:
function checkAll() {
d3.selectAll('input').property('checked', true);
}
function uncheckAll() {
d3.selectAll('input').property('checked', false);
}
从 https://github.com/mbostock/d3/wiki/Selections#wiki-property:
某些 HTML 元素具有无法使用标准属性或样式寻址的特殊属性。例如,表单文本字段具有
value
字符串属性,复选框具有checked
布尔属性。可以使用property
运算符获取或设置这些属性。
您可以通过在 type 属性上筛选选择来将选择限制为仅复选框,
d3.selectAll("input[type=checkbox]").property("checked", true);
这样可以避免在存在的非复选框输入上设置选中属性。
更改uncheckAll
函数以将checked
属性设置为null
而不是false
:
function uncheckAll(){
d3.selectAll('input').attr('checked',null);
}
选中的属性要么存在,可以选择设置为 checked="checked"
,要么不存在(根本没有选中的属性)。 在这种情况下,将其设置为 null
将删除该属性。
您需要
做的是更新元素的检查值,如下所示:
d3.selectAll("input").each(function(d){
if(d3.select(this).attr("type") == "checkbox")
d3.select(this).node().checked = true;
});
这将确保仅更改所有复选框状态
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript在页面加载时取消选中所有复选框
- (取消)使用单独的复选框激活复选框列表
- jQuery-取消选中复选框
- 单击或取消选中复选框时,如何创建弹出的自定义窗口
- Javascript选中/取消选中所有复选框并将值写入文本区域
- dojo/cbtree取消选中所有复选框并选中选中复选框
- 通过选中和取消选中复选框来添加和删除数组中的值
- 当与之关联的 ng-model 为 false 时,Angularjs 复选框值不会取消选中
- 如何通过jQuery选中所有复选框并在单击一个复选框时取消选择
- 使用Javascript根据组中的值选中或取消选中复选框
- 选中和取消选中 JavaScript 中的复选框
- 可以't取消选中该复选框(取消选中复选框时隐藏内容)
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 如何使用复选框取消选中来清除单选按钮
- 复选框取消单击事件Javascript
- 选中复选框(取消)时显示另一个文本
- Javascript复选框取消选中其他复选框,反之亦然