如何在函数内定义要由事件调用的变量

时间:2012-07-29 22:26:29

标签: javascript oop scope static-variables

如何设置函数变量,以便我可以在上下文之外调用,例如

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

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

这不起作用,因为调用onclick事件时,可能会从window调用它,而elmB未定义。

如何在不充斥全球范围的情况下实现这一目标,例如window.elmB = elmB;

我遇到了关于事件和回调的问题。

2 个答案:

答案 0 :(得分:1)

elmB不是undefined。您的代码工作正常,因为JavaScript具有闭包,即变量保留其嵌套函数的值。也许你没有在元素存在之后将其称为 - 例如,在页面底部或onload

答案 1 :(得分:-1)

为什么不随时将变量设为全局变量并访问ir? 像这样:

var globalElmB = something;

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

        globalElmb.value="ok";
    }
}