d3,数据.输入,不同的组
d3, data .enter, different groups
我将数据分隔在一个数组dict中。var BTNDATA={'B0':[0],'B1':[1] }
当我按下一个按钮时,我只想更新那一排圆圈。(我有5个按钮,5行)
我可以点击添加svg圆形元素。我通过向dicts数组推送1来更新BTNDATA dict。BTNDATA[B0].push(1)
这似乎更新了所有的键数组,而不仅仅是那个特定的数组。
问题是我只想在每次按下按钮时显示一个相应的圆圈(即行)。我无法分离cy属性的行元素。
我不明白为什么我不能直接推到数组的dict?我试图从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中没有dict——您所说的是一个对象。您要查找的语法是BTNDATA.B0.push(1)
或BTNDATA['B0'].push(1)
。在您当前的代码中,变量B0
被取消引用以索引到BTNDATA
中,这会给您带来不希望的结果。
相关文章:
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 如何读取表单中的输入数据
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 从html表中的输入数据创建图表
- 如何使用输入数据加载新的extjs图表
- Node.js输入数据事件停止
- 如何将输入数据(许多数据)添加到同一页面的下表中
- 如何使用asp.net中的Web服务从clintside输入数据
- AngularJS自定义过滤器调用了两次,并在第二次调用时删除输入数据
- Javascript:在表单中输入数据时,提交按钮不处于活动状态
- 在动态输入数据的下拉菜单中设置默认值
- d3.js强制可折叠图-输入数据是对象数组
- 如何使用HTML表显示存储在数组中的用户输入数据
- 如何使用带按钮的表链接到HTML页面,并让它使用AngularJS从Firebase输入数据
- GAS - 等到用户输入数据后,功能才会继续
- 为什么它说输入数据数组的格式不正确 jqchart.
- 将输入数据保存到全局变量
- 当输入ng-model是ngRepeat变量时,如何从输入数据中获取
- 触发 html5 输入数据列表下拉列表显示
- 如何在 AJAX 请求 (Rails) 之间保留表单输入数据