首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在鼠标悬停时突出显示功能?

如何在鼠标悬停时突出显示功能?
EN

Stack Overflow用户
提问于 2019-04-17 09:08:22
回答 1查看 76关注 0票数 0

我正在使用D3制作一张地图,并试图给它添加一些动态高亮显示。例如,当你将鼠标移到某些特征上时,边框会改变颜色/粗细。我正在使用以下代码来尝试实现这一点:

代码语言:javascript
复制
function setEnumerationUnits(manhattan, map, path, colorScale){

    //add Manhattan NTAs to map
    var manhattan = map.selectAll(".manhattan")
        .data(manhattan)
        .enter()
        .append("path")
        .attr("class", function(d){
            return "manhattan " + d.properties.ntacode;
        })
        .attr("d", path)
        .style("fill", function(d){
            return choropleth(d.properties, colorScale);
        })
        .on("mouseover", function(d){
            highlight(d.properties);
        });

    //add style descriptor to each path
    var desc = manhattan.append("desc")
        .text('{"stroke": "#000", "stroke-width": "0.5px"}');
};

。。。

代码语言:javascript
复制
//function to highlight enumeration units and bars
function highlight(props){
    //change stroke
    var selected = d3.selectAll("." + props.ntaname)
        .style({
            "stroke": "blue",
            "stroke-width": "2"
        });
    setLabel(props);
};

我希望当我“扫过”这些特性时,能看到它们的轮廓,但没有运气。当我查看控制台时,我收到类型错误,提示“无法读取null的属性'style‘”和“无法读取null的属性'html’”。我如何才能改变这一点,使其高亮显示?

EN

回答 1

Stack Overflow用户

发布于 2019-04-17 09:13:53

您必须将整个数据传递给highlight函数,而不仅仅是单个属性。

因此,不是:

代码语言:javascript
复制
  .on("mouseover", function(d){
      highlight(d.properties);
  });

它应该是:

代码语言:javascript
复制
  .on("mouseover", function(d){
      highlight(d);
  });

或者甚至更短:

代码语言:javascript
复制
  .on("mouseover", highlight);

最后,由于您没有共享setLabel函数,我不知道它是否需要一个属性或整个数据。因此,您必须相应地更改这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55718530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档