为什么 d3 exit() 长度高于预期
Why is d3 exit() length higher than expected?
我在虚拟页面的正文中附加了两个"p"标签,如下所示:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.4/d3.min.js"></script>
</head>
<body>
<h1>Hello world</h1>
<p></p>
<p></p>
</body>
</html>
然后我运行以下命令将一个数字的数组绑定到第一个"p"标签,并返回所有"p"标签的 D3 退出选择:
d3.selectAll('p').data([1]).exit();
然后,d3 返回以下内容(从 Chrome 开发工具控制台复制):
[ Array[2]
1: p
length: 2
parentNode: html
__proto__: Array[0]
]
我在这个数组中没有看到第 0 个元素,但我确实看到了第一个元素(没有绑定数据的"p"标签)。 d3 告诉我这个数组的长度是 2,那么第 0 个元素是什么,为什么它不显示在这里?
切线问题 - 我对 exit() 函数的理解是它返回选择中未绑定到任何数据的元素。 那么为什么这个数组的长度是 2(听起来它代表绑定和未绑定的"p"标签)而不是 1(只是没有绑定数据的"p"标签)?
退出选择派生自整个选择,在您的情况下,整个选择包含两个元素。这里重要的一点是选择 - 它不是一个数组。在许多方面,它的行为类似于数组,你可以用它做很多事情,你也可以用数组做,但这些函数依赖于自定义实现来处理选择。
所以基本上你从调试器获得的输出在这里有点误导。它是一个具有数组某些属性的对象(这是 Chrome 用来显示它的对象),但它并不是真正的数组。
最终重要的是正确的元素最终出现在正确的位置,正如您所观察到的,情况就是如此。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 如何创建带有插槽的vue js组件预加载程序
- 如何在d3.js中返回路径的y坐标
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 使用D3.js计算带有字母间距的文本长度
- d3中堆栈函数和嵌套函数之间的差异
- D3.js模式不适用于弧形或圆环图
- d3.js Chord图的动态工具提示
- 打印预览没有应用程序页眉和页脚的html表格
- 先预加载动画gif
- 在调用speak之前预加载Web Speech API
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 如何使用input-tage上传图片并查看在laravel中上传的文件预览
- D3嵌套组作为x轴
- 预览图像和画布
- 使用JavaScript在SpringMVC中上传图像进行预览
- 为什么 d3 exit() 长度高于预期