【发布时间】:2017-05-29 23:56:40
【问题描述】:
我在 D3.js 中有一个问题。 我可以点击圈子并与他们互动。 为了实现这一点,我定义了一个名为
的数组var array123
在功能内点击圆圈。现在有了这个数组,我可以在其中保存设置,例如更改更多圆圈的大小或颜色。 函数如下所示:
circle.on("click", function (d) {
var array123 = start && start.path(d) || []
link.style("stroke", function(d)
{
return array123.includes(d.source) && array123.includes(d.target) ? "red" : "green";
});
start = d
.....}
我现在的问题是,一旦单击一个圆圈,这些设置就会保存,并在再次单击其他圆圈时得到更新。
问题是,如何从外部重置阵列的内存?例如,我可以创建一个矩形,当我点击它时,它会重置array123 的所有内存?我尝试使用具有确切名称 (array123) 的数组来执行此操作,但我不会覆盖第一个。
【问题讨论】:
-
无法弄清楚你真正在问什么(你可能不得不编写一个最小的 jsfiddle 或 plunker 来演示)。 但是我可以告诉你,在你的点击回调中声明
var array123 = []会使变量array123作用于该函数并且在它之外不可用。 -
我强烈推荐你read and understand this。
-
谢谢马克,清空数组似乎不起作用,你能帮帮我吗?我用
rectangle.on("click", function (d) { array123 = []; -
再一次,虽然我猜你有范围问题,但你需要编写一个代码来编写一个最小的 jsfiddle 或 plunker 来展示你的麻烦。我不明白你在做什么。
-
嘿,马克,我很乐意,我的 Plunker 出了问题。我试图从记事本++中复制并粘贴它,但它没有用。我稍后会在 JSfiddle 上重试。
标签: javascript jquery arrays d3.js overwrite