Javascript 为什么';单击处理程序不能处理这个Raphael对象吗?
我目前的项目是美国的热图: 它是在Raphael和几个预先打包的库的帮助下呈现的,以生成状态的路径。在我的代码中的某个时刻,我生成了一个对代表每个状态的Raphael对象的引用数组;然后我迭代它们,使用Raphael的Javascript 为什么';单击处理程序不能处理这个Raphael对象吗?,javascript,svg,event-handling,raphael,dom-events,Javascript,Svg,Event Handling,Raphael,Dom Events,我目前的项目是美国的热图: 它是在Raphael和几个预先打包的库的帮助下呈现的,以生成状态的路径。在我的代码中的某个时刻,我生成了一个对代表每个状态的Raphael对象的引用数组;然后我迭代它们,使用Raphael的。click()方法将一个click处理程序附加到每个对象(实际的Raphael对象存储在projection.map)中: Heatmap.prototype.stateClick = function() { var projection, state,
。click()
方法将一个click处理程序附加到每个对象(实际的Raphael对象存储在projection.map
)中:
Heatmap.prototype.stateClick = function() {
var projection,
state,
_this = this;
for (state in this.projections) {
projection = this.projections[state];
console.log(state);
console.log(projection.map[0]);
(function(state, projection) {
projection.map.click(function() {
_this.overlay.update(state, _this.states[state]);
_this.overlay.reveal();
});
})(state, projection);
}
};
这在50个州中的48个州效果良好。然而,出于某种原因,阿拉斯加(AK)和俄克拉荷马(OK)似乎没有得到点击处理程序——也就是说,当我点击它们时,什么都没有发生
查看控制台上的console.log
调用的输出,我看不出AK&OK的Raphael对象与任何其他州的对象之间有什么区别,所以我对原因感到困惑
谁能确定或猜测发生了什么,或者建议我如何进一步调试?这些形状是如何绘制的(例如,可能没有完全闭合的路径?)是否会导致单击处理程序无法连接?Sheesh,找到了。我在阿拉斯加州代码(AK)中输入了一个拼写错误,而不是使用OK。这就解释了为什么这两个州是有问题的。我花了一个多小时研究这个问题,直到休息后,我用一双新的眼睛立即发现了错误