如何在我的节点上的onclick事件中调用两个JavaScript函数
我已经创建了一个节点和边缘图。为此,我创建了一个onclick方法。当我点击一个节点时,我希望该节点的颜色改变,并且该节点的信息显示在我单独创建的框中。 改变颜色的函数被调用如何在我的节点上的onclick事件中调用两个JavaScript函数,javascript,d3.js,Javascript,D3.js,我已经创建了一个节点和边缘图。为此,我创建了一个onclick方法。当我点击一个节点时,我希望该节点的颜色改变,并且该节点的信息显示在我单独创建的框中。 改变颜色的函数被调用 function changeColorClick (e, d) 提供信息的函数称为: function showDetails(e,d) 现在的问题是如何在一个onclick中包含这两个函数?如果我执行单个函数,它就会工作。但是我如何执行这两种方法呢 当我同时运行两者时,会收到以下错误消息: Uncaught Typ
function changeColorClick (e, d)
提供信息的函数称为:
function showDetails(e,d)
现在的问题是如何在一个onclick中包含这两个函数?如果我执行单个函数,它就会工作。但是我如何执行这两种方法呢
当我同时运行两者时,会收到以下错误消息:
Uncaught TypeError: node.getAttribute is not a function
at new ClassList (d3.v6.js:1923)
at classList (d3.v6.js:1918)
at classedAdd (d3.v6.js:1947)
at d3.v6.js:1958
at Selection$1.selection_each [as each] (d3.v6.js:1781)
at Selection$1.selection_classed [as classed] (d3.v6.js:1983)
at onClickNode (index.html:179)
at SVGCircleElement.<anonymous> (index.html:160)
at SVGCircleElement.<anonymous> (d3.v6.js:2107)
您共享的代码中没有任何问题-它应该完全按照预期工作。根据前面的问题,我假设您有一个
d3。在生成错误的函数中选择(this)
,箭头函数有不同的此
上下文-在本例中它不是节点。如果是这样,您可以尝试一个选项.on(“click.foo”,showDetails)。on(“click.bar,onClickNode)
,如果您希望为同一事件使用两个单独的事件侦听器,并将节点作为this
传递。但是没有看到是什么产生了错误(这两个函数中的某些东西),这只是一个有根据的猜测。在函数上showDetails
im使用d3.select(“#detail_框”)…
和在onclickNode
im使用`d3.select(这个)..`andsvg。选择All..
@AndrewReid-thx它的工作原理。重复的问题可能会很有用,因为他们的答案比我在评论中提供的更清晰和更详细的信息——这两个问题的答案都是那些比我更精通D3的人的优秀答案。
var node = svg.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(graph.nodes)
.enter()
.attr("r", 5)
.style('fill', 'red')
.on("click", (e, d) => {
showDetails(e, d);
onClickNode(e, d);
});