我想在d3中创建几个按钮。为了有一个更清晰的代码,我想在数组中添加它们的名称。
我有以下代码,但它不起作用:
var buttonNames = ["button 1", "button 2", "button 3", "button 4"]
d3.select("body").selectAll("input").data(buttonNames).enter().append("input").attr("type","button").attr("class","button").attr("value", function d(){return d;} )
提前感谢您的回复。
答案 0 :(得分:5)
你的函数定义中有一个拼写错误。
.attr("value", function d(){return d;} )
应该是
.attr("value", function (d){return d;} )
请注意d
是函数的参数,必须在括号内。
答案 1 :(得分:4)
这就是我创建多个按钮的方法。
d3.select("#some_id")
.append("div")
.attr("class","some_other_id")
.each(function(d) {
for (var i = 1; i < number_to_duplicate; i++) {
d3.select("#some_other_id")
.append("button")
.attr("type","button")
.attr("class","btn-btn")
.attr("id",function(d) { return 'button '+i;})
.append("div")
.attr("class","label")
.text(function(d) { return 'button '+i;})
我创建了一个div和一个.each(函数)。在函数中,for循环创建按钮。 这给了我尽可能多的按钮 - number_to_duplicate - 每个都有个人ID。 当然,我可以修改这个更多按钮,使用相同或不同的属性,将它们附加到不同的yet_another_id元素。
如果需要,标签可以在其他地方的环外进行。 这是我的穷人按钮工厂&#39;。请评论批评,积极或消极 - 让我学习。