我使用以下代码使用D3从json读取数据并将其传递给另一个函数。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Simple venn.js example</title>
</head>
<style>
div {
max-width: 300px;
height: 400px;
margin: 0 0 0 0;
padding: 0 0 0 0;
}
</style>
<body>
<div id="weighted_example"></div>
</body>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.js"></script>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="../venn.js"></script>
<script>
var sets= [{}];
d3.json( "json", function( data )
{
sets=data; // reading successfully
});
alert(sets); // but i need to use alert to pass the value to function div.datum(sets) otherwise sets value is null.
var div =d3.select("#weighted_example")
div.datum(sets).call(venn.VennDiagram())
</script>
</html>
json文件:
答案 0 :(得分:1)
d3.json
是一个异步函数,因此当您到达div.datum
行时,无法确定集合是否已就绪。
你看到它使用警报的原因是因为警报会停止你的javascript流,因此设置会有一个值归属。
您应该将您的基准代码放在d3.json
代码中。