Javascript D3 append在与VueJS和Vuex一起使用时不是函数

Javascript D3 append在与VueJS和Vuex一起使用时不是函数,javascript,d3.js,vue.js,Javascript,D3.js,Vue.js,我有一个html“div”,我正试图通过以下方式向其附加另一个div: var myDiv = d3.select("#container") myDiv.append("div") 我得到以下错误: append不是一个函数 有什么想法吗?我正在使用Vuex,因此我在存储中实例化了变量,并尝试将其设置为d3 select 我组装了一个代码笔,与我的代码笔类似: 在最新的代码笔中,您提到的错误来自最后一行,您试图直接附加到networkVariable.node,而不使用enter选择

我有一个html“div”,我正试图通过以下方式向其附加另一个div:

var myDiv = d3.select("#container")    
myDiv.append("div")
我得到以下错误:

append不是一个函数

有什么想法吗?我正在使用Vuex,因此我在存储中实例化了变量,并尝试将其设置为d3 select

我组装了一个代码笔,与我的代码笔类似:


在最新的代码笔中,您提到的错误来自最后一行,您试图直接附加到networkVariable.node,而不使用enter选择

当我将最后一行更改为:

networkVariables.nodeEnter = networkVariables.node.enter();
networkVariables.nodeEnter.append("div");

代码笔中有错误的那一行就像@SteveR注意到了最后一行一样

它不是d3.select的结果,而是d3.selectAll…数据的结果。。。。该数组包含5个空占位符和两个字段。这些是进入和退出,都是功能。要将其转换为选择结果,必须先调用其中一个函数,然后才能追加

但是在最初的问题中,如果具有给定id的标记存在,则追加应该没有问题


代码笔与原始问题/示例不同。

此处networkVariables.nodenter=networkVariables.node.appenddiv;,networkVariables.node对象中没有追加。我尝试用networkVariables.node.append替换networkVariables.node[0]。parentNode.appenddiv,这似乎在代码段中起作用。你能试试这个变化吗。

我无法重现。您可以创建一个运行的代码段,或者使用像JSFIDLE这样的站点重现问题吗?很可能没有id为divId的标记。所选内容为空或未定义。使用调试器查看myDiv是什么?@rioV8-Nope,这不会给出所提到的错误。问题是,我的代码中的其他地方也有这样的工作。发现很难复制。可能是数据问题,我已经检查了元素是否在那里,它是否在。我明白这个问题是模糊的,令人恼火的是我没有例子,我只是想知道是否有人碰到了同样的事情要注意,我使用的是VueJs、webpack和Babel,也许它们之间存在不一致?虽然它修复了错误,但它并不等同于OP的代码。一般来说,在更新选择中调用.append没有问题。True,但在本例中,名为node和data的networkVariables属性实际上是Vue框架中的getter/setter函数,这就是为什么d3 append方法不可用的原因。既然他的代码似乎是从一个空页面开始,并从数据中构建DOM元素,为什么不使用enter选择?networkVariables.node是.data的返回。。。呼叫这不是一个。选择…的结果。。。。退出组是一个空列表。
networkVariables.nodeEnter = networkVariables.node.enter();
networkVariables.nodeEnter.append("div");