D3从包含名称的字符串数组创建按钮

时间:2013-03-06 10:02:36

标签: javascript arrays button d3.js selectall

我想在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;} )

提前感谢您的回复。

2 个答案:

答案 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;。请评论批评,积极或消极 - 让我学习。