【发布时间】:2018-12-07 15:00:14
【问题描述】:
我尝试 D3 是为了好玩,但由于某种原因,我无法让我的 svg 组件在浏览器中呈现。检查控制台,我可以看到创建了 svg 容器,但没有创建任何元素。
我正在从 .json 文件加载。如果我将数据打印到控制台,我可以看到 .json 文件中包含的所有内容,因此它正在获取正确的数据。
我的 HTML 非常基础:
<!DOCTYPE html>
<html>
<head>
<title>D3 Test</title>
<script type="text/javascript" src="d3-min.js"></script>
<script type="text/javascript" src="script.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div id="tree"></div>
<script>
importJsonData();
</script>
</body>
</html>
这是我的 JS:
function importJsonData() {
d3.json("./test/test_data.json", function(data) {
console.log(data);
let canvas = d3.select("#tree").append("svg")
.attr("width", 1000)
.attr("height", 700)
canvas.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("width", 50)
.attr("height", 50)
.attr("y", function (d, i)
{
return i * 50
})
.attr("fill", "green");
});
}
我可能对 selectAll 有错误的理解 - 我认为它会 selectAll 匹配过滤器的元素,但如果您使用 enter() 将数据归因于此,它将为每个元素创建一个组件。
感谢任何帮助。
【问题讨论】:
标签: javascript d3.js svg