D3.js不起作用的非常简单的教程示例

Very simple tutorial example of D3.js not working

本文关键字:的教程 简单 非常 js 不起作用 D3      更新时间:2023-09-26

我是D3.js的新手。我正在阅读Mike Dewar的《D3入门》。我试过书中的第一个例子,但没有用。我一直在为这件事伤透脑筋。我这里的代码出了什么问题?

<head>部分:

<script src="http://mbostock.github.com/d3/d3.js"></script>
<script>
   function draw(data) {
    "use strict";
   d3.select("body")
      .append("ul")
      .selectAll("li")
      .data(data)
      .enter()
      .append("li")
         .text(function (d) {
            return d.name + ": " + d.status;
         });
      }
</script>

<body>:中

<script>
    d3.json("flare.json", draw);
</script>

JSON文件:

[
{
    "status": ["GOOD SERVICE"],
    "name": ["123"],
    "url": [null],
    "text": ["..."],
    "plannedworkheadline": [null],
    "Time": [" 7:35AM"],
    "Date": ["12/15/2011"]
}
]

如果您使用Chrome,由于跨域安全限制,它可能会阻止您正确打开文件。试试Firefox看看是否是这样(它可能会让你正确加载文件)。

如果这是问题所在,您将需要安装像WAMP这样的本地web服务器(如果您运行的是Windows),或者按照此处wiki页面上的说明进行操作:https://github.com/mbostock/d3/wiki

祝好运

您是否检查了浏览器控制台以查看您的XHR请求成功了吗?

当我试图在我的机器上运行代码时,使用VS 2012 Express中d3(v3)的本地版本,XHR请求返回一条错误消息:

HTTP错误404.3-找不到

但是,当我更改"flare"的扩展名时文件从.json.txt.js,如这里所暗示的:https://serverfault.com/questions/39989/iis-cant-serve-certain-file-extension,则XHR请求成功。

好吧,d.name和d.status都是数组,如果你想显示它们的内容,或者yo应该访问这些数组的0索引值,它们应该只是字符串;即d.name[0]+':'+d.status[0];

它可能是您的JSON。我做了同样的练习,效果很好。这是我的js(我附加到了div,而不是body)。我正在运行本地web服务器。

d3.json("data/mta001.json", drawli);
function drawli(data) {
    "use strict";
    d3.select('#mta001')
      .append('ul')
      .selectAll('ul')
      .data(data)
      .enter()
      .append('li')
        .text(function (d) {
            return d.name + ': ' + d.status;
      });
    d3.selectAll('#mta001 li')
      .style('color', function (d) {
        if ( d.status == 'GOOD SERVICE') {
            return 'green';
        } else {
            return 'fuchsia';
        }
      });
}

这是我的JSON:

[
        {
          "name": "123",
          "status": "DELAYS",
          "text": "delay text",
          "Date": "12/08/2012",
          "Time": " 1:03PM"
        }
]