如果文本的y位置超过某个值,我试图从条形图中删除文本值,我只希望删除该特定文本,而不是所有文本。
我遇到的问题是,在页面完全加载之前,y位置没有被评估(或者看起来似乎是这样),这里是那段代码:
.text( function(d) { if(d3.select(this).attr("y") < 10) { "" }
else { return d["Category" + catInt]; }
console.log("Not yet evaluated: " + d3.select(this).attr("y"))
})
在这种情况下返回12个空值,但是如果我在之后执行的函数中记录值,我会获得所有位置,如下所示:
function getProp() {
d3.selectAll(".textEnter").each(function(d) {
console.log("Evaluated: " + d3.select(this).attr("y"))
})
}
有谁知道更好的方法吗?
以下是完整代码:编辑:已修复 Plunker
答案 0 :(得分:1)
由于您正在调用transition()
,因此文本即将进行转换,并且在该时间点尚未实际分配y
属性。此外,您在第一个if语句中缺少return
。所以该函数只是运行到最后并返回undefined
。
您可以重新使用y缩放功能来检查y
的未来值。我在您的Plunker代码中使用了它,它显示了标签:
.text(function(d) {
if( y(d["Category" + catInt]) < 10) {
return "";
}
else {
return d["Category" + catInt];
}
})
答案 1 :(得分:1)
或您可以使用const splitString = "123.123.1".split(".");
for (var i = 0; i < 3; i++) {
var prefix = parseInt(splitString[i]);
console.log(stringCheck(prefix))
}
function stringCheck(inputString) {
if (inputString < 250) {
return true
} else {
return false
}
}
回调并按以下方式添加文字:
transition.on('end')