给所有圆圈元素点击珠子

Give to all circle element onclick beahviour

本文关键字:元素      更新时间:2023-09-26

我必须创建一个函数来获取所有圆形元素并使它们可单击。使用我的代码,我只能单击创建的最后一个节点,我不明白为什么。你能帮我吗?我使用 d3 库,这是我的代码:

var allCircles = vis.selectAll('circle');
allCircles.on('click', function(){
    /* make the same stuff depending from the circle clicked */
});

如果您需要更多解释,请问我。

非常感谢你帮助我!

最好

在圆圈的(父)容器元素上添加事件侦听器。这意味着您有这样一个元素,例如可以添加侦听器的<g>

var circleContainer = /* find your g element that contains the circles here */;
circleContainer.on('click', function(){
    // d3.event.target is the clicked circle
    d3.select(d3.event.target).attr("fill", "blue");
});

如果你更熟悉jQuery,这个概念在那里被称为"委托事件"。

我不使用 d3 库,我从未听说过它,但我可以在没有

var circles=document.getElementsByTagName('circle');
function onclik() {
  //do stuff
}
for(var i=0;i<circles.length;i++){
  circles[i].setAttribute("onclick","onclik()")
}

我希望它有所帮助!