我正在尝试创建类似这样的工具提示:http://bl.ocks.org/sdbernard/2e44bd82c9d048b88451/2b31b98b8f6acb8d7c6026b5eec801e2f1f61ab2
该块的底层代码和数据结构类似于我自己的代码和数据结构,除了我也做了小倍数。这是我的Plunker:http://plnkr.co/edit/BsLMhbldIYvZEVOu23aM?p=preview
当我尝试将块的工具提示调整到我的可视化时,使用月份和年份 - 甚至只是年份(如原始版本) - 我收到错误消息:“无法读取属性'-1'未定义”< / p>
有问题的代码似乎在这里:
var mousex = d3.mouse(this);
mousex = mousex[0] + 10;
var invertedx = xScale.invert(mousex);
// This doesn't work: //
invertedx = invertedx.dates;
var selected = (d.value);
mousedate = dates.indexOf(String(invertedx));
pro = d.value[mousedate].y;
这也不起作用:
invertedx = invertedx.getMonth() + invertedx.getFullYear();
var selected = (d.value);
for (var k = 0; k < selected.length; k++) {
dates[k] = selected[k].x
dates[k] = dates[k].getMonth() + dates[k].getFullYear();
}
mousedate = dates.indexOf(invertedx);
pro = d.value[mousedate].y;
这是我的Plunker:http://plnkr.co/edit/BsLMhbldIYvZEVOu23aM?p=preview 我已经花了差不多一个星期的时间,没有太多或任何进展。提前,非常感谢你的帮助。
答案 0 :(得分:1)
到目前为止,我能找到的是如果你在问题区域之前进行console.log(d),那么你就没有定义d.value。我所看到的是d.values,它是一个数组。
此外,mousedate最终为-1,因为它没有寻找日期中的索引。
我可能还没有找到整个解决方案,但修复它应该会让你重新回到正轨,至少。