Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3.js动态创建笔刷函数_Javascript_D3.js_Brush - Fatal编程技术网

Javascript d3.js动态创建笔刷函数

Javascript d3.js动态创建笔刷函数,javascript,d3.js,brush,Javascript,D3.js,Brush,我的“固定长度”示例运行良好 我目前有一个画笔数组(用于直方图),我在数组中为其定义: var brushFunctionArray=[brush0,brush1,brush2] 我通过直方图循环创建直方图,并为我使用的每个画笔: var brush = d3.svg.brush() .x(x) .on("brush", brushFunctionArray[i]); 我对画笔的定义如下: function brush0 () {

我的“固定长度”示例运行良好

我目前有一个画笔数组(用于直方图),我在数组中为其定义:

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);} 
然后对笔刷移动有一个定义:

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);
}
var-brushFunctionArray=[];
对于(var i=0;i
这将创建函数并将它们插入数组中,但我不能像以前那样在.on(“brush”,…)中使用brushFunctionArray,因为函数在其中,而不是函数的名称。另外,当我将函数放入数组时,我不再初始化它们


谢谢你的建议

通过在数组中插入匿名(即未命名)函数,您应该能够随心所欲地使用它们

var brushFunctionArray = [];
for (var i = 0; i < numOfHistograms; i++){
  brushFunctionArray.push(function() { brushmove(i); });
}
var-brushFunctionArray=[];
对于(var i=0;i
如果使用匿名函数,则在尝试移动任何画笔时会出现错误:Uncaught TypeError:无法调用undefined的“extent”方法,您必须以某种方式将函数名放在其中,brush0、brush1……对我来说很好——您有完整的示例吗?