0
是否有可能在一个div中包装五个svg,并且每个五个新创建的div都用javascript(而不是jquery)包装在另一个div中?用D3.js包装div中的每五个svg元素
这里是我的代码
d3.csv("example.svg", function(data) {
data.forEach(function(d){
var svgContainer = d3.select(".parentclass").append("svg")
.attr("width",55)
.attr("height",35);
var rectangle = svgContainer.append("rect")
.attr("x",0)
.attr("y",0)
.attr("width",55)
.attr("height",35)
.attr("fill", "rgb(" + d.r + "," + d.g + "," + d.b + ")");
})
});
我期望的输出是
<div class="column1">
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
</div>
<div class="column2">
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
<div class="line">
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg>
<svg width="55" height="35">....</svg></div>
</div>
可能的解决思路1:
伊夫添加以下代码变种svgContainer 但所有的SVG是前在第一个孩子补充。
if ((i % 5 == 0) || (i == 0)) {
var body = d3.select('.parentclass')
.append('div')
.attr('class','childclass');
}
i = i + 1;
可能的解决思路2:
var svgContainer = d3.select(".milk").filter(function(i){ return ((i % 5 === 0) || (i === 1)); }).append("div")
.append("svg")
.attr("width",55)
.attr("height",35);
var test = function (i) {
i = i + 1;
return i;
}
如何使他的工作任何想法?
谢谢你的回答,即时试图使这项工作。你的例子中的 有关如何依次显示数字的任何想法? – evnartabt
@evnartabt我已经更新了我的答案,以显示如何完成这项工作 – thedude
我在这方面挣扎了好几天,而且我还没有接近! 谢谢你的答案! – evnartabt