d3强制导向树在单击节点时显示NaN

时间:2015-07-03 15:20:58

标签: javascript d3.js tree force-layout

当我在本地运行此示例时

http://bl.ocks.org/mbostock/1138500

如果我点击或尝试拖动,它会执行此操作。

enter image description here

为什么?

这1,200个错误指向代码的这一部分:

                node.attr("cx", function(d) { return d.x; })
                    .attr("cy", function(d) { return d.y; });

                link.attr("x1", function(d) { return d.source.x; })
                    .attr("y1", function(d) { return d.source.y; })
                    .attr("x2", function(d) { return d.target.x; })
                    .attr("y2", function(d) { return d.target.y; });

似乎x和y没有得到正确的数据?

我尝试根据本文中的评论将force.stop()放在几个不同的地方,但到目前为止还没有运气。 NaN on Force-Directed Layout Append in D3.js

感谢。

1 个答案:

答案 0 :(得分:1)

队列不是问题。 解决方案是忽略最后两个链接导致的404错误,或者只是删除链接。

问题在于,由于HTML中存在三个JS文件的链接,我认为这些文件是必需的。

<script type="text/javascript" src="http://mbostock.github.com/d3/d3.js?1.29.1"></script>
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.geom.js?1.29.1"></script>
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.layout.js?1.29.1"></script>

最后两个有404错误,所以我在网上其他地方查找,并从code.google.com复制它们,但它仍然无法正常工作。幸运的是,我只是尝试删除链接,但它确实有效。

显然不需要这两个最后的链接,这就是为什么404错误没有打破它。

然后我找到了这个页面:https://github.com/mbostock/d3/wiki/Upgrading-to-3.0

我没有注意到这是一个有四年历史的例子,所以旧链接并没有成为一个问题。我现在看到1.29.1表明了D3的v1。

当然,将其切换到当前版本也可以

https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js