2

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

提前感谢您的回复。

4

2 回答 2

5

您的函数定义中有错字。

.attr("value", function d(){return d;} )

应该

.attr("value", function (d){return d;} )

请注意,这d是函数的参数,必须在括号内。

于 2013-03-06T10:12:53.190 回答
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(function)。在函数中,for 循环创建按钮。这给了我尽可能多的按钮 - number_to_duplicate - 每个按钮都有单独的 id。当然,我可以修改它,制作更多具有相同或不同属性的按钮,将它们附加到不同的 yet_another_id 元素。

如果需要,可以在其他地方的循环之外完成标签。这是我穷人的“纽扣工厂”。请评论评论,正面或负面 - 让我学习。

于 2015-07-07T20:03:04.413 回答