在selectall之前完成一行

时间:2012-07-03 15:26:10

标签: javascript d3.js

我有一个带有我的列标题的数组,我希望我的第一个单元格以“A1”作为标题。 我试过这样:

var title=mtable.append("thead").append("tr");
title.append("td").text("A1");
title.selectAll("td")
        .data(lTitre)
        .enter().append("td")
        .text(function(d) { return d.key; });

我的代码没有绘制第一列标题:2007(如下所示)。我怎么能解决这个问题?

<thead>
  <tr>
    <td>A1</td>
 !!!! <td>2007</td> !!!!! is missing here 
    <td>2008</td>
    <td>2009</td>
    <td>2010</td>
    <td>2011</td>
  </tr>
</thead>

1 个答案:

答案 0 :(得分:1)

使用当前代码,如果您检查__data__绑定到<td>A1</td>,则会看到它__data__.key == 2007。发生这种情况是因为只要您的selectAll()语句与当前选择中的任何元素匹配,.data()函数就会在创建输入选择之前将数据绑定到现有元素。要解决此问题,只需使用与任何现有元素都不匹配的selectAll()函数:

var title = mtable.append("thead").append("tr");
title.append("td").text("A1");
title.selectAll(".new")
        .data(lTitre)
        .enter().append("td")
        .text(function(d) { return d.key; });