我正在用Javascript D3做一个条形图。我想在复选框被选中时对数据进行排序,并且当复选框未选中时,可视化将返回到未排序状态。
现在“检查复选框时排序数据”效果很好,但取消选中复选框没有任何区别(这意味着数据仍然保持排序状态)。任何帮助表示赞赏。提前致谢!取消勾选复选框没有区别
代码片段:
<form>
<label><input type="checkbox" id="check" onchange="sortData(this);" value="sort">Sort Data</label>
</form>
<script>
var data;
function sortData(cb) {
if (cb.checked) {
// sort data
var checkedData = data;
checkedData.sort((a, b) => d3.descending(a[myCategory], b[myCategory]));
drawVis(checkedData);
} else {
// do not sort data
console.log("Unchecked!");
drawVis(data);
}
}
function drawVis(data) {
svg.selectAll(".bar").remove();
svg.selectAll("g").remove();
......
svg.append("g")
.attr("class", "axis axis--x")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x));
svg.append("g")
.attr("class", "axis axis--y")
.call(d3.axisLeft(y));
svg.selectAll(".bar")
.data(data)
.enter().append("rect");
......
}
</script>
你在哪里给'data'赋值? – Ayush
@Ayush我有值分配给'数据',但我省略了这部分代码片段。当复选框被选中时,它会对条进行排序。我不确定,但我不认为问题在于'数据'变量。 – Emile