Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';单击处理程序不能处理这个Raphael对象吗?_Javascript_Svg_Event Handling_Raphael_Dom Events - Fatal编程技术网

Javascript 为什么';单击处理程序不能处理这个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,

我目前的项目是美国的热图:

它是在Raphael和几个预先打包的库的帮助下呈现的,以生成状态的路径。在我的代码中的某个时刻,我生成了一个对代表每个状态的Raphael对象的引用数组;然后我迭代它们,使用Raphael的
。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。这就解释了为什么这两个州是有问题的。我花了一个多小时研究这个问题,直到休息后,我用一双新的眼睛立即发现了错误