我的“固定长度”示例效果很好。
我目前有一组画笔(用于直方图),我在数组中定义了这些画笔:
var brushFunctionArray = [brush0,brush1,brush2];
我通过一个直方图循环来创建直方图,并且对于我使用的每个画笔:
var brush = d3.svg.brush()
.x(x)
.on("brush", brushFunctionArray[i]);
我这样定义画笔:
function brush0 () {brushmove(0);}
function brush1 () {brushmove(1);}
function brush2 () {brushmove(2);}
然后有一个brushmove的定义:
function brushmove(index){
...
...
}
这工作正常。但是,我希望能够在运行时使数组超出固定长度(brush0 ...brushB)。我试图动态创建函数:
var brushFunctionArray = [];
for (var i = 0; i < numOfHistograms; i++){
var func = new Function("return function brush" + i + " () {brushmove("+i+");}")();
brushFunctionArray.push(func);
}
这会创建函数并将它们插入到数组中,但我不能像以前那样完全使用 .on("brush",..) 中的brushFunctionArray,因为函数在那里而不是函数的名称。另外,当我将函数放入数组时,我不再初始化它们。
感谢您的任何建议!