【发布时间】:2013-06-19 01:09:27
【问题描述】:
我无法弄清楚为什么我一生都会收到此错误(使用强制布局)。当我切换到从 json 文件中读取节点时,它就开始了。如果我取消注释下面的行,它不会引发错误。如果我按原样离开,我会得到“无法调用未定义的方法'push'”。我不确定问题是什么。我错过了什么吗?
<html>
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.js"></script>
<script>
d3.json("http://katejustin.com/autosys1.json", function(data) {
//var nodes = {};
//data.links.forEach(function(link) {
// link.source = nodes[link.source] || (nodes[link.source] = {name: link.source});
// link.target = nodes[link.target] || (nodes[link.target] = {name: link.target}); });
var width = 200,
height = 200;
var svg = d3.select("body").append("svg:svg")
.attr("width", width)
.attr("height", height);
var force = d3.layout.force()
//.nodes(d3.values(nodes))
.nodes(data.nodes)
.links(data.links)
.size([width, height])
.distance(100)
.charge(-1000)
.start();
});
</script>
</html>
【问题讨论】:
-
-1,隔离问题
-
您可以使用其下方的“编辑”按钮修改您的原始帖子。主要问题是您发布的第二个代码块。太多了。
-
还有太多多余的东西。隔离问题的主要思想是制作一个测试文件,其中包含最低限度的问题。例如,如果您在创建 5 个包含 22 个子菜单的下拉菜单时遇到问题,那么隔离问题只会有 1 个下拉菜单和 1 个子菜单和最少的 CSS/JS。
-
我删除了其余的代码,所以它实际上并没有做任何事情,但它仍然会中断我的原始邮件,除非我取消注释掉这些行。
-
检查
data.nodes和data.links是否有值
标签: javascript d3.js force-layout