我对javascript相对较新,我发现在我的程序中发生了一件非常奇怪的事情,可能是非常愚蠢的事情,但我无法弄清楚。
所以我的svg rect有一些属性:
var rectFiltres =
groups.selectAll("rect")
.data(data)
.enter().append("rect")
.attr("class","rect")
.attr({
x: function(d){return 0},
y: function(d){return 0},
width : function(d){return 0},
height : function(d){return 10},
id : function (d){d.config;}
})
.style("fill",function(d){return color(d.combi)})
在我的剧本中的某个时刻,我试图改变属性" id"多个" rect"在循环中:
for (var i=0;i<(confiClick.length-1);i++){
var rectTest = d3.select(rectFiltres[0][i]);
console.log(confiClick[i])
var configIdRect = confiClick[i];
console.log(configIdRect)
rectTest.transition()
.duration(800).style("opacity", 0.5)
.attr("height",10)
.attr("width",10)
.attr("x",function(d){return largeurBox + confiClick[i].textWidth('arial',12)-20;})
.attr("y",function(d){return haut2 +20*(i+1)-39;})
.attr("id",configIdRect)
.style("fill",colorBoxSelect)
.style("opacity",0.5)
console.log(rectTest)
}
几乎每次都工作得很好,除非有一次confiClick [0]中的0碰巧消失了:confiClick [0] =&#34; parc_client = TPH03&#34;存储在rect中作为&#34; parc_client = TPH3&#34;。 0已经消失了!!我不明白为什么。
Here is the log in firefox, for some reason I can't try on another browser (job related issues)
这只发生在循环的第一个元素中,并且仅针对字符串的值,这些值不能帮助我理解问题。 (如果此字符串位于循环中的第二个或第三个位置,则它可以正常工作)
我喜欢尝试你可能有的任何建议,因为我有点坚持那个:/