javascript - d3js 树的类型错误

标签 javascript d3.js typeerror

在 d3js tree sample ,我尝试将 update 调用移到 d3.json 函数之外。当我这样做时,我得到:

TypeError: d is undefined

这是代码(这里的函数与示例的链接略有不同)。请注意,我将对 update 的调用移至 d3.json 函数之外。请注意,root 是一个全局变量。

  d3.json("../data/flare.json", function(json) {   
     root = json;   
     root.x0 = height / 2;   
     root.y0 = 0;

    function collapse(d) {
      if (d.children) {
        d._children = d.children;
        d._children.forEach(collapse);
        d.children = null;
      }   
    }

   root.children.forEach(collapse);   
   // move this out   
   // update(root); 
});

update(root);

function update(source) {.....

最佳答案

d3.json 是异步调用。这意味着调用将立即返回,但处理程序中的代码要稍后才会运行。就您而言,这意味着当您调用 update(root) 时,root 未定义(或为空)。

简而言之,您必须d3.json 的回调内部调用update(root)。虽然有一些可能性可以使其在回调之外工作,但这些可能性要复杂得多。

关于javascript - d3js 树的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20902524/

相关文章:

javascript - 动态requirejs配置扩展

javascript - CSS动画(颤动效果)

javascript - D3 力导向图方向

svg - 放大后在 Chrome 上过渡字体大小

javascript - 无法读取 Javascript 文件(非脚本标记)中 null 的属性(读取 'addEventListener' )

java - 此方法必须返回 boolean 类型的结果,java

javascript - 始终显示总计并停止显示 NaN

javascript - 如何创建一个 RxJS 缓冲区来对 NodeJS 中的元素进行分组但不依赖于永远运行的间隔?

javascript - 定义时的 D3 样式 SVG 元素

python - TypeError: * 之后的类型对象参数必须是可迭代的,而不是 int