将for循环的值赋给函数d3
Give value of for loop to function d3
我试图给d3的点击函数一个for循环的值。遗憾的是没有取得任何成功。你们中有人知道如何解决这个问题吗?这是一段有问题的代码:
function generateLegenda(catlist) {
for (z=0; z < catlist.length ; z++) {
var legenda = d3.select("div.legendaCats")
.append("p")
.attr("class", "legendaItem")
.on("click", function(d, z){
blueLine = catlist[z];
// Determine if current line is visible
var active = (d3.selectAll("#" + blueLine)).active ? false : true,
newOpacity = active ? 0.2 : 1;
// Hide or show the elements
d3.selectAll("#" + blueLine).style("opacity", newOpacity);
d3.selectAll("#" + blueLine).style("opacity", newOpacity);
// Update whether or not the elements are active
(d3.selectAll("#" + blueLine)).active = active;
});
我认为你的错误在于:
.on("click", function(d, z){
blueLine = catlist[z];
在函数中定义z
将赋予它与for迭代的值不同的含义。尝试以下操作:
.on("click", function(d){
blueLine = catlist[z];
z
参数覆盖for循环的z
。但是您必须使用闭包,以便在侦听器中保存z
的当前值,请尝试以下操作:
function generateLegenda(catlist) {
for (z=0; z < catlist.length ; z++) {
var legenda = d3.select("div.legendaCats")
.append("p")
.attr("class", "legendaItem")
.on("click", (function(catIndex){
return function(d){
blueLine = catlist[catIndex];
// Determine if current line is visible
var active = (d3.selectAll("#" + blueLine)).active ? false : true,
newOpacity = active ? 0.2 : 1;
// Hide or show the elements
d3.selectAll("#" + blueLine).style("opacity", newOpacity);
d3.selectAll("#" + blueLine).style("opacity", newOpacity);
// Update whether or not the elements are active
(d3.selectAll("#" + blueLine)).active = active;
};
})(z));
}
}
相关文章:
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- d3中堆栈函数和嵌套函数之间的差异
- D3数学函数创建
- D3选择html——传递函数时,索引从1开始,而不是从0开始
- 将for循环的值赋给函数d3
- 基本 D3.js:如何在函数中使用联接
- D3:使用 nest 函数将带有父键的平面数据转换为层次结构
- 检查D3.js中的函数中是否存在URL
- 如何动态地决定并告诉d3.json()函数何时使用哪个json
- D3未捕获类型错误:path.data不是函数
- d3.event在反跳函数内部为null
- D3中的可重用函数
- d3通过改变参数化函数使折线图水平动画化
- 链接D3.js力布局网络的阈值函数中的笔划宽度
- d3-append()带有函数参数
- 将JSON从rails控制器加载到javascript文件中的d3.dedefe()函数
- d3.js voronoi.clipExtent()返回错误:undefined不是函数
- D3 折线图:x 折线函数始终呈现 NaN
- 刷新函数未正确调用 d3
- 如何让一个事件调用多个函数?D3/Javascript