我构建了一个d3地图,并且必须访问各种操作的绑定数据。当我使用.on("mouseover",...)
或.on("mousemove",...)
执行此操作时,它可以正常工作。但我也想根据这些值设置填充颜色。当我尝试通过.attr("fill",...)
和回调函数执行此操作时,它会给我一个typeError“d is undefinded”。这是一个工作和非工作的代码示例:
kommunen
.selectAll("path")
.data(featuresKommunen)
.enter().append("path")
.attr("d", path)
.attr("class", "kommune")
.on("mouseover",function (d){
// gives me the correct values
console.log(d.properties.AGS)
})
非工作:
kommunen
.selectAll("path")
.data(featuresKommunen)
.enter().append("path")
.attr("d", path)
.attr("class", "kommune")
.attr("fill",function (d){
// gives me TypeError: d is undefined
console.log(d.properties.AGS)
// the same here
console.log(d.properties)
})
再次记录根元素
kommunen
.selectAll("path")
.data(featuresKommunen)
.enter().append("path")
.attr("d", path)
.attr("class", "kommune")
.attr("fill",function (d){
console.log(d)
// works and gives me a list of objects:
// Object { type: "Feature", properties: Object, geometry: Object }
// Object { type: "Feature", properties: Object, geometry: Object }
// Object { type: "Feature", properties: Object, geometry: Object }
// ...
})
答案 0 :(得分:0)
我的geojson生成了一些没有属性和坐标的对象(无论它们来自哪里......),因此它们在屏幕上不可见但在DOM中退出。在我写了一个小语句来检查是否定义了适当的语句后,它就有用了!
kommunen
.selectAll("path")
.data(featuresKommunen)
.enter().append("path")
.attr("d", path)
.attr("class", "kommune")
.attr("fill",function (d){
// works by skipping the missing properies-values
if (d.properties) {console.log(d.properties.AGS)}
})