Javascript 带有自定义元素的D3:TypeError:t为空

Javascript 带有自定义元素的D3:TypeError:t为空,javascript,d3.js,html5-canvas,Javascript,D3.js,Html5 Canvas,我正在尝试将D3V.4与canvas元素一起使用(遵循介绍的模式)。我想将我的数据绑定到一个自定义元素,这样它就可以在内存中访问,但不会像svg那样呈现到页面上。但是,下面的代码抛出:TypeError:t为null。我无法获得有关错误的良好堆栈跟踪 const data = [{a:1,b:2},{a:2,b:4}]; const dataContainer = document.createElement('custom'); const container = d3.select(da

我正在尝试将D3V.4与canvas元素一起使用(遵循介绍的模式)。我想将我的数据绑定到一个自定义元素,这样它就可以在内存中访问,但不会像svg那样呈现到页面上。但是,下面的代码抛出:
TypeError:t为null
。我无法获得有关错误的良好堆栈跟踪

const data = [{a:1,b:2},{a:2,b:4}]; 

const dataContainer = document.createElement('custom');
const container = d3.select(dataContainer)
      .data(data).enter()
      .append('custom')
      .attr('class','element')
      .attr('test-data-attribute', (d) => { return d; });

const nodes = container.selectAll('.element');
console.log(nodes.length);

代码笔演示:提前感谢

无论您想做什么(我并没有真正遵循),要想让输入的选择生效,您必须使用
selectAll

const data = [{
    a: 1,
    b: 2
}, {
    a: 2,
    b: 4
}];

const dataContainer = document.createElement('custom');
const container = d3.select(dataContainer)
    .selectAll(null)// <---- selectAll here
    .data(data).enter()
    .append('custom')
    .attr('class', 'element')
    .attr('test-data-attribute', (d) => {
        return d;
    });

const nodes = container.selectAll('.element');
console.log(nodes);
const数据=[{
答:1,,
b:2
}, {
答:2,,
b:4
}];
const dataContainer=document.createElement('custom');
const container=d3.select(数据容器)
。选择全部(空)//{
返回d;
});
const nodes=container.selectAll('.element');
console.log(节点);
以下是更新的代码笔:

PS:我删除了
console.log(nodes.length)
中的
length
,因为在D3V4.x中,选择是对象,不再是数组