javascript - d3.js 读取数据集时出现问题

标签 javascript jquery d3.js svg

我已经尝试解决这个错误 2 天了,现在不知道如何解决这个问题。我在尝试将数据添加到可视化时收到此错误白色

未捕获类型错误:无法读取未定义的属性“长度”

这似乎与数据集有关。但无论我做什么,如果我在 checkit 函数之外 console.log 数据集(见下文),我都会收到此错误,它返回未定义。

数据

[ {
    "Continent":"Asia.Oceania",
    "Country_Names":"Viet Nam",
    "Total":142.9
  },
  {
    "Continent":"Asia.Oceania",
    "Country_Names":"Yemen",
    "Total":20
  },
  {
    "Continent":"Misc",
    "Country_Names":"World marine bunkers",
    "Total":602.2
  },
  {
    "Continent":"Misc",
    "Country_Names":"World aviation bunkers",
    "Total":477.8
  }
]

代码

var svg_0 = d3.xml("drawing.svg", "image/svg+xml", function(xml) {
    var importedNode = document.importNode(xml.documentElement, true);
    d3.select("#viz").node().appendChild(importedNode);



var dataset;

function checkIt(data){
for (var i in data) {
            var data_clean;
            data_clean = data[i].Total
            dataset = data_clean
            console.log(dataset) //returns data
        }

        }
    console.log(dataset)//returns undefined


    d3.json("data.json", checkIt);


    var svg =  d3.select("#level_0")
                .selectAll("path")
                .data(dataset)
                .enter()
    });

最佳答案

d3.json("data.json", checkIt); 是异步操作 ( check syntax here for example )。简而言之,这意味着在代码执行的某个时刻,dataset 变量实际上是尚未定义。然后,稍后它被定义,但为时已晚。

这意味着您需要确保在开始使用数据集时已定义该数据集。例如,您可以将使用转移到 checkIt 回调,如下所示:

  var dataset;
    function checkIt(data){
     var data_clean = []; //prepared variable for clear data
    for (var i in data) {
      data_clean.push(data[i].Total);
      }
  //move initialisation here, to be sure dataset is there
  var svg =  d3.select("#level_0")
               .selectAll("path")
               .data(data_clean);  
  }
//other code here...
d3.json("data.json", checkIt);
//other code here...

关于javascript - d3.js 读取数据集时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599555/

相关文章:

javascript - 忽略小词,在字数统计中

javascript - d3.js 面积图的最后一条线位于错误的一侧

json - 如何存储从文件加载的JSON对象?

javascript - 如何在javascript中使用回调函数添加按钮单击事件作为window.confirm

javascript - 如何使 html 输入字段的占位符文本可编辑?

javascript - 无法通过 AJAX 发送 JSON

javascript - 将下一个元素与jquery中选定的元素一起删除

javascript - d3树节点位置

javascript - 无法使用 JSON 来回转换字符串索引数组

javascript - 为什么垂直滚动条总是可见