javascript – d3中的数据连接;我不能正确理解选择和/或数据键功能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – d3中的数据连接;我不能正确理解选择和/或数据键功能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2406字,纯文字阅读大概需要4分钟。
内容图文
![javascript – d3中的数据连接;我不能正确理解选择和/或数据键功能](/upload/InfoBanner/zyjiaocheng/770/0a3a20041e3249639287a9c8ecf904c4.jpg)
我正在研究一个简单的d3示例,其中我使用d3在页面上放置一些新的div,添加属性以及添加数据驱动的样式.绊倒我的部分是当我想使用d3使用新数据更新某些样式时.我已经从下面的jsFiddle(http://jsfiddle.net/MzPUg/15/)粘贴了代码.
在最初创建div的步骤中,我使用键函数将索引添加到元素和更新步骤(不工作的部分)我也使用键功能.但是d3文档中不清楚的是实际数据连接是如何工作的(例如,DOM元素中存储的索引在哪里?如果存在重复索引,会怎么样?等等).
所以,我的知识存在明显的差距,但是在这里保持简单可以解释为什么这个例子不起作用?关于d3中数据连接的精确性质的任何其他信息都将是结霜. (我已经看过http://bost.ocks.org/mike/join/了.)
//add a container div to the body and add a class
var thediv = d3.select("body").append("div").attr("class","bluediv");
//add six medium-sized divs to the container div
//note that a key index function is provided to the data method here
//where do the resulting index value get stored?
var mediumdivs = thediv.selectAll("div")
.data([10,50,90,130,170,210],function(d){return d})
.enter().append("div")
.style("top",function(d){return d + "px"})
.style("left",function(d){return d + "px"})
.attr("class","meddiv")
//UPDATE STEP - NOT WORKING
//Attempt to update the position of two divs
var newdata = [{newval:30,oldval:10},{newval:80,oldval:50}]
var mediumUpdate = mediumdivs.data(newdata,function(d){return d.oldval})
.style("left",function(d){return d.newval + "px"})
解决方法:
据我所知,您不会更新已存在的元素.相反,您告诉D3要绘制哪些元素,并确定要在屏幕上删除或更新的内容.
我用工作代码更新了你的JSFiddle.我还添加了以下代码.
//add a container div to the body and add a class
var thediv = d3.select("body").append("div").attr("class", "bluediv");
function update(data) {
var mediumdivs = thediv.selectAll("div").data(data, function(d) {
return d;
});
// Tell D3 to add a div for each data point.
mediumdivs.enter().append("div").style("top", function(d) {
return d + "px";
}).style("left", function(d) {
return d + "px";
}).attr("class", "meddiv")
// Add an id element to allow you to find this div outside of D3.
.attr("id", function(d) {
return d;
});
// Tell D3 to remove all divs that no longer point to existing data.
mediumdivs.exit().remove();
}
// Draw the scene for the initial data array at the top.
update([10, 50, 90, 130, 170, 210]);
// Draw the scene with the updated array.
update([30, 80, 90, 130, 170, 210]);
我不确定D3如何存储索引的内部工作方式,但您可以为您创建的div添加id属性,以便为自己创建唯一索引.
内容总结
以上是互联网集市为您收集整理的javascript – d3中的数据连接;我不能正确理解选择和/或数据键功能全部内容,希望文章能够帮你解决javascript – d3中的数据连接;我不能正确理解选择和/或数据键功能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。