将功能分配给var不起作用。价值仍然是“未定义的”

时间:2017-08-31 10:12:21

标签: javascript json d3.js graph

我一直在努力解决这个问题。 我是 Javascript 的新手,所以有些事我还是不明白。 我创建了函数 linkBuilder 来从JSON文件中提取一些数据。我测试了 parseLine 并且它有效。

links=[];
let linkBuilder = function(){
  d3.text('prova2utenti.json',function(err,data){
  if (err) throw err;
  var elements = data.split('\n');
  for (var i=0, l=elements.length; i<l; i++){
    links.concat(parseLine(elements[i]));
    console.log(links);
  }
  });
}

问题 是当我尝试使用此代码为我的图表创建链接时:

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 links 从未初始化一样。我想这是因为吊装,但我不确定,反正我不知道如何解决。 任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

好的,我能够解决这个问题。就像@GerardoFurtado建议的那样,我把所有的逻辑都放在了专用函数中绘制图形。然后只需在d3.text内调用该函数即可完成工作。 我使用concat()函数另一个问题。它每次调用时都会创建一个 new array ,而不是添加到同一个数组。我使用push()方法解决了问题。