onload函数中定义的函数的未捕获的ReferenceError

Ali*_*hşi 2 javascript

HTML:

<div id="myID" onclick="cc(this.id)">Click Here</div>?
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

错误:

Uncaught ReferenceError: cc is not defined 
Run Code Online (Sandbox Code Playgroud)

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

Que*_*tin 9

您的JSFiddle首选项设置为"onload",因此JavaScript窗格的内容包含在函数中.

这个范围cc(dd不存在,为jsfiddle示例创建一个额外的问题)到该函数并使其停止为全局.

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

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

建议避免使用Javascript绑定事件处理程序的内部事件属性.YUI3提供了一个事件模块,jQuery提供了帮助解决此问题的on方法(其他库可用).另请参见:不引人注目的JavaScript.

例如,看到这个js小提琴.