javascript - d3,数据.enter,不同组

标签 javascript d3.js

我将数据分隔在数组字典中。 var BTNDATA={'B0':[0],'B1':[1] }

当我按下按钮时,我只想更新那行圆圈。 (我有 5 个按钮,5 行)

我可以单击添加一个 svg 圆形元素。我通过将 1 插入该 dicts 数组来更新 BTNDATA 字典。 BTNDATA[B0].push(1)

这似乎会更新所有键数组,而不仅仅是特定的键数组。

问题是我只想在每次按下按钮时显示相应的圆圈(即行)。我无法分隔 cy 属性的行元素。

我不明白为什么我不能直接推送到数组字典?我尝试从 dict 创建数组的切片,但没有成功。我尝试创建单独的组,添加附加到这些组而不仅仅是 svg 容器。

这是 d3 更新输入退出代码:

function addCrl( bi, crldt) {
var i, btni, crl, shm, drow;

//data
drow = BTNDATA[bi].slice()

crl = svg1.selectAll("circle") 
         .data(drow)
//update

//enter
crl.enter()
    .append("circle")
    .attr('class', function(){ return 'c'+btni})
    .attr('cx', function() {
        return btni + 13
    })
    .attr('cy', function(){
        return drow.length * 2;
    } )
    .attr("r",13)
    .style("fill","red")

//exit  
dlt(crl,bi)
crl.exit()
    .remove()


}

这是我称之为的循环:

function addBtnClk(bid) {
d3.select('#'+bid).on("click", function() {
    BTNDATA[bid].push(1);
    var crldt = BTNDATA[bid].slice()
    addCrl( bid, crldt );
});
}

function main(){
var i;
//add buttons/eventhandler
for(i=0; i<5; i++){
    domBtn( pr[i], ky[i] )
    addBtnClk( ky[i] )
   }
}

最佳答案

Javascript 中没有指令——你所说的是一个对象。您要查找的语法是 BTNDATA.B0.push(1)BTNDATA['B0'].push(1)。在您当前的代码中,变量 B0 被取消引用以索引到 BTNDATA,这会给您带来不良结果。

关于javascript - d3,数据.enter,不同组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20062203/

相关文章:

javascript - $.when.apply($, someArray) 是做什么的?

javascript - 重用 react 组件

javascript - Jquery:从字符串中获取标题和正文标签内容

javascript - 从对象的键中获取最大值

javascript - 类型 'transition' 上不存在属性 'Selection<BaseType, {}, null, undefined>'

reactjs - React-hooks 和 d3.forceSimulation

javascript - 我如何知道我的项目的最低 node.js 版本?

javascript - 需要 d3.js 逻辑来处理 JSON 数据

javascript - 在 JavaScript 中的两点之间画线?

javascript - 取消暂停 d3.timer