【发布时间】:2018-10-29 09:32:18
【问题描述】:
我正在尝试使用 D3 构建地图仪表板 - 用户必须选择四个下拉菜单。这些下拉列表中的每一个都将从大型数据集中过滤掉不同的参数。
选择所有这些将为我提供制作地图所需的数据。我想只有在选择了这四个下拉选项后才运行 drawMap 函数。
我知道可以做到以下几点;
document.getElementById("#idofdropdown").addEventListener("change",function(event){
RUNFUNCTION();
});
如何在多个事件的情况下做到这一点?这个question 似乎正在寻找使用绑定的类似解决方案,但开发人员认为这不是一个好习惯。
在这种情况下,还有什么其他方法可以解决这个问题?
更新我想通了。我记下了,在您做出选择的前四次,它会递增然后运行该函数,而对于后续更改 - 它会一次又一次地运行该函数。正是我需要的。
count = 0
$(function() {
$('.dropdown').change(function() {
count = count + 1
if (count > 4) {
count = count - 1;
}
if (count == 4) {
RUNFUNCTION();
}
});
});
【问题讨论】:
-
您可以简单地通过监听每个下拉菜单的更改以及一个确保所有 4 个都被选中的 if 语句来实现此目的。
-
我可以单独监听更改(我可以增加变量的计数,当计数达到下拉列表的数量时,我运行该函数),但 if 语句甚至不会执行在聆听变化之前?
-
这成功了!
count=0 $(function() { $('.dropdown').change(function() { count=count+1 if(count>4){ count=count-1; } if(count==4){ RUNFUNCTION(); } }); }); -
当你将一个改回无值时这将不起作用,它仍然会触发运行。查看我的版本
标签: javascript html d3.js dropdown