Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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与svg_Javascript_Svg_D3.js - Fatal编程技术网

Javascript 处理元素时的d3与svg

Javascript 处理元素时的d3与svg,javascript,svg,d3.js,Javascript,Svg,D3.js,在使用 d3.selectAll() 及 什么时候 在处理创建、删除svg标记中的元素时?正如AJ_91所指出的,d3。选择All。。。搜索整个文档,而svg.selectAll。。。将搜索限制为选择中的SVG。后者对于大型文档的性能更高 但是,还有另一个重要的区别:如果var svg引用的d3选择包含多个元素,则类似svg的子选择。selectAll“path”将按预期选择每个元素中的所有元素,但结果选择也将保持对具有不同父元素的子选择之间的近亲关系的了解 这称为嵌套选择,称为bostock

在使用

d3.selectAll()

什么时候

在处理创建、删除svg标记中的元素时?

正如AJ_91所指出的,d3。选择All。。。搜索整个文档,而svg.selectAll。。。将搜索限制为选择中的SVG。后者对于大型文档的性能更高

但是,还有另一个重要的区别:如果var svg引用的d3选择包含多个元素,则类似svg的子选择。selectAll“path”将按预期选择每个元素中的所有元素,但结果选择也将保持对具有不同父元素的子选择之间的近亲关系的了解


这称为嵌套选择,称为bostock。嵌套选择用于构造表,因为表表示两级层次结构,即n行,然后每行m列。如果您有一个多级数据集,希望从中创建多个svg,其中每个svg都包含多个趋势线路径或多个条形图,那么嵌套的svg选择类似于表。

d3。选择所有“svg”;正在选择id为“SVG”的每个元素。而svg.selectAll'svg';正在选择作为“svg”元素的子元素的每个“svg”元素非常感谢您的回答。我是否应该尽可能使用svg而不是d3?是的,如果svg选择包含正确的内容,那么我想不出不使用的理由。效率更高。当然,如果选择中有多个SVG,而您只想解决其中的一个SVG,请注意。
svg.selectAll()
var svg = d3.select("#someChart")
            .append("svg")
            .attr("width", w)
            .attr("height", h);