Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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和x27;当当前选择为div时,s.call()传递错误的选择_Javascript_Svg_D3.js - Fatal编程技术网

Javascript d3和x27;当当前选择为div时,s.call()传递错误的选择

Javascript d3和x27;当当前选择为div时,s.call()传递错误的选择,javascript,svg,d3.js,Javascript,Svg,D3.js,开始选择是div容器元素 function chart(selection) { createSVGCanvas(selection)// <---- Works //selection.call(createSVGCanvas) // <---- Doesn't Work .call(calculateScales) .call(dataLayer) return this; } function createSVGCanvas(s

开始选择是div容器元素

function chart(selection)
{
    createSVGCanvas(selection)// <----  Works
    //selection.call(createSVGCanvas) // <----  Doesn't Work
    .call(calculateScales) 
    .call(dataLayer)

    return this;
}

function createSVGCanvas(selection)
{
    //This properly returns an svg element, but in the broken version
    // the NEXT .call'd function (calculateScales), has a selection of the
    // div#svg_canvas, NOT the svg.

    return selection.append("svg")
      .attr("width", config.width)
      .attr("height", config.height);
}
功能图(选择)
{
从以下位置创建SvgCanvas(选择)/:

无论指定函数的返回值如何,调用运算符始终返回当前选择


也就是说,您的预期用途显式不起作用。JSFIDLE中未注释的代码是正确的方法。

我们希望返回更改的选择,因为下面的.call()希望选择是svg而不是div。如果我们按照您上面所述的做,那么我们必须重新配置所有其他.call()函数首先筛选这些选择。但另一方面,为什么selection.call(createSVGCanvas)失败,createSVGCanvas(selection)工作?