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 ペインのコンテンツは関数でラップされています。

これはその関数にスコープを設定しcc(dd存在しないため、jsfiddle の例で追加の問題が発生します)、その関数がグローバルになるのを停止します。

固有のイベント属性から呼び出そうとしているため、スコープが異なり、アクセスできません。

簡単な修正として、設定を「nowrap」に変更できますが、コードがベスト プラクティスに準拠することはありません。

イベント ハンドラーを Javascriptにバインドすることを優先して、固有のイベント属性を避けることをお勧めします。YUI3 はイベント モジュールを提供し、jQuery はこれを支援するonメソッドを提供します (他のライブラリが利用可能です)。参照:控えめな JavaScript

たとえば、この js fiddle を参照してください

于 2012-09-07T12:30:00.820 に答える
2

フィドルに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 に答える