Javascript d3版本4获取空对象

Javascript d3版本4获取空对象,javascript,d3.js,svg,Javascript,D3.js,Svg,我正试图让D3V4像以前的v3一样进行基本的简单渲染,我得到的是空对象。 下面是代码的简单版本: <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.4.0/d3.min.js"></script> <script> var dataset = [23, 45, 66, 77, 88, 99]; var svg = d3.select("body").append("svg").at

我正试图让D3V4像以前的v3一样进行基本的简单渲染,我得到的是空对象。 下面是代码的简单版本:

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.4.0/d3.min.js"></script>
<script>
    var dataset = [23, 45, 66, 77, 88, 99];
    var svg = d3.select("body").append("svg").attr({width: 500, height: 500});
    console.log('svg : '+svg);
</script>

var数据集=[23,45,66,77,88,99];
var svg=d3.select(“body”).append(“svg”).attr({宽度:500,高度:500});
log('svg:'+svg);
上述代码的结果是:

svg:null

用v3编写相同的代码,结果

svg:[对象SVGSVGElement]'


我错过了什么?我正在学习教程,其中大部分都在v3中

attr函数可以接受两个参数—属性名和属性值。请尝试以下方法:

var dataset = [23, 45, 66, 77, 88, 99];
var svg = d3.select("body").append("svg")
    .attr("height", 500)
    .attr("width", 500);

console.log('svg : '+svg);
尽管所有答案(包括当前接受的答案)都有相反的说法,但您可以在D3版本4.x中将对象传递给
attr
style
,只要:

  • 首先,您引用“多选择”:

因此,在您的代码中,应该是:

var svg = d3.select("body")
    .append("svg")
    .attrs({width: 500, height: 500});
下面是一个演示,向您展示它的工作原理

var svg=d3.选择(“主体”)
.append(“svg”)
.attrs({宽度:500,高度:500});
log('svg:'+JSON.stringify(svg))


我刚试过,效果不错。。所以我不能把我所有的属性放在一个对象中?我必须使用.attr()方法逐个指定吗?这是正确的。你可以在这里找到更多关于如何使用选择的信息:你是对的。我在这里找到了这个地址:并且使用了你提到的图书馆,这很有效。谢谢大家
d3.select("body").append("div")
     .attrs({
        title: "A cheery, timeless greeting.",
        class: "greeting"
     })
    .text("Hello, world!");
var svg = d3.select("body")
    .append("svg")
    .attrs({width: 500, height: 500});