-2

この例のように、コンテキスト外で呼び出すことができるように関数変数を設定するにはどうすればよいですか?

function testSet(elmA,elmB) {
    elmA.onclick = function() {
        elmB.value = "ok";
    };
}

testSet(document.getElementById('a'),document.getElementById('b'));

onclickイベントが呼び出されたときに、おそらくfromから呼び出されwindowelmB未定義であるため、これは機能しません。

グローバルスコープをあふれさせることなく、これを機能させるにはどうすればよいwindow.elmB = elmB;ですか?

イベントとコールバックでこの問題が発生しています。

4

2 に答える 2

1

elmBではありませんundefined。JavaScriptにはクロージャがあるため、コードは正常に機能します。つまり、変数はネストされた関数の値を保持します。おそらく、要素が存在した、たとえばページの下部、またはonload

于 2012-07-29T22:29:48.037 に答える
-1

変数をグローバルにして、いつでもirにアクセスしてみませんか?このような:

var globalElmB = something;

function testSet(elmA,elmB){
    globalElmb = elmB;
    elmA.onclick=function(){

        globalElmb.value="ok";
    }
}
于 2012-07-29T22:32:42.860 に答える