Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据搜索框中的输入值更新d3js树的现有节点属性?_Javascript_D3.js - Fatal编程技术网

Javascript 如何根据搜索框中的输入值更新d3js树的现有节点属性?

Javascript 如何根据搜索框中的输入值更新d3js树的现有节点属性?,javascript,d3.js,Javascript,D3.js,我正在使用这个d3js示例: 在我的例子中,唯一的区别是整个代码被包装在一个外部调用的函数中。因此,考虑所有变量都在这样的函数中定义。 然后,还是在外部,我希望根据我创建的搜索框更新节点属性,如下所示: <div id="footer"> <label for="search">search: </label> <input type="text" id="search" onkeyup="update(this.value)">

我正在使用这个d3js示例:

在我的例子中,唯一的区别是整个代码被包装在一个外部调用的函数中。因此,考虑所有变量都在这样的函数中定义。 然后,还是在外部,我希望根据我创建的搜索框更新节点属性,如下所示:

<div id="footer">
    <label for="search">search: </label>
    <input type="text" id="search" onkeyup="update(this.value)">
</div>
这些文本应根据查询框et get bold的标签输入进行更新。然而,一切都没有改变。我是否以正确的方式调用了所有文本元素?或者,由于整个脚本是在外部调用的函数中初始化的,所以没有更新任何内容

希望这是清楚的

编辑-在Gerardo的第一条评论之后

谢谢你的回复和强调!我更改了函数的名称。然而,不幸的是,在我的情况下,它仍然没有反应

如前所述,我有一个包装所有内容的函数,例如:

function updateDoc(json) {

        ...then all the code goes here...

      function updateName(query) {
        var text = d3.select("svg")
            .selectAll('text')
            .style("font-weight", function (d) {
                console.log(d.name)
                if (d.name.toLowerCase().indexOf(query.toLowerCase()) != -1){ 
            return "bold" } else { return "normal" }
            });
        }

    }

很可能这就是问题的原因。有没有关于如何完成这项工作的提示?我不想再次调用函数updateDoc,因为它将免费重新计算一堆东西。我试图将updateName放在updateDoc之外,但效果不好…

您的函数确实有效。问题只在于它的名称:该代码中已经有一个名为
update
的函数

解决方案:更改其名称。例如,
updateName

<input type="text" id="search" onkeyup="updateName(this.value)">

下面是bl.ocks:

您的函数确实有效。问题只在于它的名称:该代码中已经有一个名为
update
的函数

解决方案:更改其名称。例如,
updateName

<input type="text" id="search" onkeyup="updateName(this.value)">

下面是bl.ocks:

嗨,杰拉尔多,非常感谢你的回答!我通过编辑我的帖子来回复你。下面是如何在外部函数中调用它:抱歉,由于某些原因,我无法获得这项工作。。。当我看到它在你的例子中起作用时,我很沮丧!这就是我构建整个代码的方式。updateLayers在外部被调用。好吧,我帮不了你更多。。。我希望其他人写一个适合你的答案。嗨,杰拉尔多,非常感谢你的回答!我通过编辑我的帖子来回复你。下面是如何在外部函数中调用它:抱歉,由于某些原因,我无法获得这项工作。。。当我看到它在你的例子中起作用时,我很沮丧!这就是我构建整个代码的方式。updateLayers在外部被调用。好吧,我帮不了你更多。。。我希望其他人写一个适合你的答案。
function updateName(query) {
    //etc...