javascript - 根据表单输入过滤 d3 js 对象

标签 javascript jquery d3.js

我正在使用 d3js 来显示节点和边的网络。在可视化中,我添加了一个选项 [HTML 表单输入] 来搜索节点。输入可以是多个节点。

我很难使用过滤器功能过滤多个节点。我搜索了很多但没有发现类似的问题。相关代码如下:

$("#submit-search").submit(function(event) {
     // values separated by commas
    var ip = $("#search-nodes").val().split(',');
    // converts to integers
    for(var i=0; i<ip.length; i++) {ip[i] = parseInt(ip[i], 10);}
    visualization.selectAll('circle')
    .filter(function(d){
         return ip.indexOf(d.name) != -1 ? d.name : false;
    })
    .style("stroke-width", 15)
    .style("stroke-opacity", 0.75)
    .style("fill", "black");
});

由于indexOf函数仅返回第一个命中,因此仅突出显示一个节点。我尝试使用 jQuery 的 grep 函数,但没有成功。

添加了可视化图像。由于我在本地使用 django 框架,因此它不公开。

编辑:包含 jsfiddle http://jsfiddle.net/ZqzbN/ [错误]

节点具有以下属性:度中心性、组、名称、介数中心性、度 边具有属性:源节点、目标节点、组

最佳答案

我对 d3js 不熟悉,但我能想到的最简单的解决方案是将过滤器功能分离到可视化范围之外。我会推荐这样的东西。这只是伪代码:

var new_array;

for each node in ip:
  insert node.name into new_array if node.name != -1
end

visualization.do_your_stuff_with(new_array);

关于javascript - 根据表单输入过滤 d3 js 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22070430/

相关文章:

javascript - jQuery 更改 bootstrap-slider 的值

javascript - 在 d3 路径内添加数字/文本

javascript - 获取 d3 轴刻度线以将中心与图形点对齐

javascript - 将 json 数据从一个页面显示到新重定向的页面

javascript - URL 未在 webview 中加载但在 android 的浏览器中加载?

javascript - 使用 jQuery 动态刷新有序列表

javascript - D3.js 和 NVD3.js,何时使用

javascript - 第二次点击时下拉菜单不起作用

Javascript 将 ID 添加到 div 内的元素

jquery-ui - jQuery-JTable:为行添加单击事件?