【发布时间】:2018-07-12 21:45:25
【问题描述】:
我一直在尝试使用单选按钮(代码应在单击某个单选按钮后仅显示特定年龄组)并使用导入的 JSON 文件来创建年龄过滤器。对于单选按钮,有一个年龄范围,例如 0-20、20-30 等。
我想知道如何从单选按钮的输入值中删除字符“-”,存储剩余的值,例如“0”和“20”,并将它们与我的 JSON 文件进行比较?
以下是我所拥有的:
HTML
<h3 id="title3">Age</h3>
<div class="radioButtonBoxMenu">
<label><input name="radiob" type="radio" value="0-20">0-20</label><br>
<label><input name="radiob" type="radio" value="20-30">20-30</label><br>
<label><input name="radiob" type="radio" value="30-40">30-40</label><br>
<label><input name="radiob" type="radio" value="40">40+</label><br>
</div>
一小部分 JSON 文件
"nodes":[
{ "id": "1", "name": "John", "age": "31", "gender": "M"},
{ "id": "2", "name": "Emily", "age": "23", "gender": "F" },
{ "id": "3", "name": "Crystal", "age": "23", "gender": "F" },
{ "id": "4", "name": "Himiko", "age": "23", "gender": "F" }
]
JavaScript
//Code for radio button filter on age range
d3.selectAll("input[name=radiob]").on("change", function(d) {
var value = this.value;
var age = document.getElementsByName("radiob");
var ageBracket;
node.style("opacity", 1);
link.style("opacity", 1);
for (var i = 0; i < age.length; i++) {
if (age[i].checked) {
ageBracket = age[i].value;
if (ageBracket == "0-20") {
//Do something...
}
}
}
if (value !== "") {
node.filter(function(d) {
return d.age != value;
})
.style("opacity", "0.2");
link.filter(function(d) {
return d.source.age != value &&
d.target.age != value;
})
.style("opacity", "0.2");
link.filter(function(d) {
return d.source.age == value ||
d.target.age == value;
})
.style("opacity", "1");
}
});
【问题讨论】:
-
我添加了答案,希望它会按照您的期望工作。谢谢
标签: javascript json d3.js radio-button