gpt4 book ai didi

javascript - D3.js:访问函数的输出

转载 作者:行者123 更新时间:2023-12-01 04:04:51 26 4
gpt4 key购买 nike

作为 Javascript 新手,我无法理解如何访问以下函数的输出:

function dimensionLabels(d) {
return __.dimensions[d].title ? __.dimensions[d].title : d; // dimension display names
}

我所理解的是,当它作为 .text 中的回调函数传递时,它成功返回一些显示在浏览器中的文本(例如“标题 [n°1]”):

    .append("svg:text")
.attr("text-anchor", "middle")
.attr('x', 0)
.attr('y', -10)
.attr('class', "label")

.append('svg:tspan')
.attr('x', 0)
.attr('dy', 0)
.text(dimensionLabels)

所以我假设DimensionLabels返回一些字符串,就好像我用.text(“myString”)替换.text(dimensionLabels)一样,原始文本(“Header [n°1]”)被成功替换为“myString” ”。

但是,我需要做的是从维度标签访问文本并处理它,例如使用:

.text(dimensionLabels.split('[', 2)) 

但这会产生以下错误:

TypeError: dimensionLabels.split is not a function

有人可以描述一下上面的函数是如何工作的,以及我应该做什么来访问它的输出吗?

最佳答案

.text 将函数作为参数,然后在内部调用它,并向其传递 d(数据)参数。因此,由于 .text 想要一个函数,只需创建您自己的匿名函数并包装对 dimensionLabels 的调用:

.text(function(d){
var string = dimensionLabels(d);
return string.split('[', 2);
})

回复评论

d3 .text 方法可以采用字符串返回字符串的函数。如果给它一个字符串,它会将文本设置为该字符串。如果您给它一个函数,该函数不会立即调用。相反,在后台,d3 稍后会调用它。当它这样做时,它会传入 d 参数,这个 d 参数是绑定(bind)到该 DOM 片段的数据。 (在某些时候,您的代码通过 .data 调用进行数据绑定(bind))。

由于以下行,您在调用 dimensionLabels("myString") 时收到错误:

__.dimensions[d].title

您有一些名为 __ 的对象,它具有 dimensions 属性。该属性是一个可以索引的数组或对象(我不知道,因为你已经为我提供了足够的代码来确定):

__.dimensions["myString"]

返回未定义。并且未定义永远不会有名为title的属性。然后BAM,你得到了你的错误。

关于javascript - D3.js:访问函数的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41912418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com