D3.js:“ searchFieldValue”和“ searchText”匹配,但停留在searchTree()

时间:2019-04-23 00:13:15

标签: javascript jquery css d3.js jquery-select2

我目前正在尝试将一个缩进的垂直组织树和一个select2输入select链接起来,由于某种原因,我被困在“ searchTree()”函数中。这是一个缩进的垂直树的样本:

Mike Bostock's Indented Vertical Org Tree

这是另一棵将select2搜索化为一棵树的示例:

Patrick Brockmann's D3 Tree Search

我正在尝试将所有这些结合起来。这是另外两个链接,可能会给您带来更多的启示:

My Plunkr

Personal GitHub Repository

我遇到问题的代码部分是以下功能:

    function searchTree(d) {
        if (d.children) {
            d.children.forEach(searchTree);     
        }
        else if (d._children) {
            d._children.forEach(searchTree);        
        }
        var searchField = "d.data.name";
        var searchFieldValue = eval(searchField);
        if (searchFieldValue && searchFieldValue.match(searchText)) {
            // Walk parent chain
            var ancestors = [];
            var parent = d.data;
            console.log(searchFieldValue);
            console.log(searchText);
            while (typeof(parent) !== "undefined") {
                ancestors.push(parent);
                console.log("Ancestors: " + ancestors);
                console.log("Parent: " + parent);
                parent.parent.class = "found";
                parent = parent.parent;
            }   
        }
    }

以下是当前情况的一些屏幕截图。

Select2 and D3 Tree on initial page load.

select2下拉菜单进行交互并展开D3树,但选择未链接到适当的节点,如Patrick Brockman的代码所示:

Tree opened after select2 selection

这也是searchTree()函数中各种console.logs的结果。一切看起来都不错(与Brockman的版本相比),直到“ parent”变为null为止。那就是功能停止的地方。

Console.log of parents and ancestors

基本目标是允许用户从select2下拉菜单select搜索中自动“跳转”到具有各种父/子节点和突出显示/填充的链接的节点。我目前被困在searchTree()函数末尾的while循环中。

为什么会出现错误“无法将属性'class'设置为null”。

0 个答案:

没有答案