2

HTML:

<div id="myID" onclick="cc(this.id)">Click Here</div>​

JavaScript:

var timer;
var firing = false;
var begen = function(id) {
    alert('tek');
};

var popupAc = function(id) {
    alert('çift');
};

function cc(id) {
    if (firing) {
        popupAc(id);
        clearTimeout(timer);
        firing = false;
        return;
    }
    firing = true;
    timer = setTimeout(function() {
        //begen(id);
        clearTimeout(timer);
        firing = false;
    }, 250);
}

错误:

Uncaught ReferenceError: cc is not defined 

示例:http: //jsfiddle.net/LXSZj/3/

4

3 回答 3

9

您的 JSFiddle 首选项设置为“onload”,因此 JavaScript 窗格的内容被包装在一个函数中。

这个范围ccdd不存在,为 jsfiddle 示例创建了一个额外的问题)到该函数并停止它是一个全局的。

由于您尝试从内部事件属性调用它,因此您处于不同的范围内并且无法访问它。

作为快速修复,您可以将首选项更改为“nowrap”,但这不会使代码符合最佳实践。

建议避免使用固有事件属性,而是使用 Javascript 绑定事件处理程序。YUI3 提供了一个事件模块,而 jQuery 提供了帮助解决此问题的on方法(其他库可用)。另请参阅:不显眼的 JavaScript

例如,请参阅这个 js fiddle

于 2012-09-07T12:30:00.820 回答
2

确实如此,您的小提琴中只有两个错误:

  • 你打电话dd而不是cc
  • 您将整个 javascript 包装在一个 onload-function 中(请参见左侧的下拉菜单),并且变量和函数是本地的。将其移至全局范围,或将cc函数分配给全局对象:window.cc = function(){…};

修正版

于 2012-09-07T12:31:01.507 回答
1
window.cc = function(id) { ...

变量和函数似乎在它们的范围内......

于 2012-09-07T12:30:50.020 回答