Javascript 根据d3.js中的d属性向文本中添加可变数量的tspan元素 var span={}; var计数器=0; var f=0; labelT.每个(功能(d,i){ var splitted=d.name.split(“”); console.log(拆分); 对于(变量k=0,f=0;k

Javascript 根据d3.js中的d属性向文本中添加可变数量的tspan元素 var span={}; var计数器=0; var f=0; labelT.每个(功能(d,i){ var splitted=d.name.split(“”); console.log(拆分); 对于(变量k=0,f=0;k,javascript,d3.js,Javascript,D3.js,我想向labelT变量添加尽可能多的tspan,这是一个文本元素,取决于var数组中拆分的单词数量。这将为每个单词产生一个新行。问题是,我不知道如何选择当前的labelT元素。我尝试了for循环中的alread labelT.select和发布的selection版本。有人能帮忙吗? 谢谢 虽然上述解决方案确实有效,但您应该能够使用“more-D3-style”解决方案将数据重新绑定到元素。请注意,我尚未测试此代码,因此您可能需要修改它以使其100%正常工作: var spans = {};

我想向labelT变量添加尽可能多的tspan,这是一个文本元素,取决于var数组中拆分的单词数量。这将为每个单词产生一个新行。问题是,我不知道如何选择当前的labelT元素。我尝试了for循环中的alread labelT.select和发布的selection版本。有人能帮忙吗?
谢谢

虽然上述解决方案确实有效,但您应该能够使用“more-D3-style”解决方案将数据重新绑定到元素。请注意,我尚未测试此代码,因此您可能需要修改它以使其100%正常工作:

var spans = {};
    var counter = 0;
    var f = 0;
    labelT.each(function(d,i){
            var splitted = d.name.split(" ");
            console.log(splitted);
            for(var k = 0,f = 0; k < splitted.length; k++,f += 1.2){
                spans[k] = labelT.select(this).append("tspan")
                .attr("class", "tspan"+counter)
                .attr("dy",f+"em")
                .attr("x",0)
                .text(function(d){return splitted[k]});
                counter ++ ;
            }
            counter ++;
    });

虽然上述解决方案确实有效,但您应该能够使用“more-D3-style”解决方案将数据重新绑定到元素。请注意,我尚未测试此代码,因此您可能需要修改它以使其100%正常工作:

var spans = {};
    var counter = 0;
    var f = 0;
    labelT.each(function(d,i){
            var splitted = d.name.split(" ");
            console.log(splitted);
            for(var k = 0,f = 0; k < splitted.length; k++,f += 1.2){
                spans[k] = labelT.select(this).append("tspan")
                .attr("class", "tspan"+counter)
                .attr("dy",f+"em")
                .attr("x",0)
                .text(function(d){return splitted[k]});
                counter ++ ;
            }
            counter ++;
    });

d3.选择(此)。附加。。。。。。解决了问题并得到了正确的选择。如果您将此作为一个答案(最好有一个好的解释)来写,您可以接受它(运营商可以在几天后接受他们自己的答案)。d3.选择(此)。附加。。。。。。解决了问题并获得了正确的选择。如果您将此作为答案(最好有一个好的解释)来写,您可以接受它(运营商可以在几天后接受他们自己的答案)。谢谢,重新绑定非常好和聪明!唯一不适合我的问题的一行是:.attr('dy',函数setAttr(d,i){return(i*1.2)+'em';})我坚持:.attr('dy',f+“em”),因为这在每次tspants之后都会有一行中断。为此,重新绑定非常好和聪明!唯一不适合我的问题的一行是:.attr('dy',function setAttr(d,i){return(i*1.2)+'em';})我坚持:.attr('dy',f+“em”),因为这在每次tspan后都会有一行中断