以下是一些代码,用于创建Scott Murray的书" Web的互动数据可视化"。该代码允许生成,更新(添加/删除)和排序条形图。除了我无法使用排序按钮工作之外它完美地工作。我知道sort函数有效,因为我已经将click事件(运行sort函数)附加到每个bar。因此,当单击一个条形时,条形图将被排序。
这是JSfiddle - http://jsfiddle.net/kiniadit/k812fo53/3/
以下是不起作用的代码段(第74-77行)
else if(btnClass == "sort"){
sortBars();
sortLabels();
}
答案 0 :(得分:1)
问题在于您为点击事件设置处理程序功能的方式。您正在选择所有按钮并附加一个内部确定要执行的操作的处理程序。该处理程序运行代码以更新所有按钮的条形图,无论之前发生了什么。
在您的特定情况下,这意味着排序正确完成并设置了相应的转换,但随后由更新条形码的代码立即取消(以处理添加/删除的值)。在这种情况下,这不会做任何事情,因此唯一的效果是取消排序处理程序设置的所有内容。
要修复,只需在调用排序函数后退出该函数:
return;
完整演示here。