变量对事件侦听器的值

时间:2013-07-17 15:17:41

标签: javascript

任务很简单,但我的经验还不足以解决它。我需要在eventListiner中使用外部变量。现在,如果我尝试使用外部变量,那么我得到“未定义”。这似乎是通过闭包解决的,但我无法完全理解它是如何工作的。

错误的代码:

function myfunc(){
    title = "Head";
    console.log(title);//Head
    document.getElementById("test").onclick = function(){
        console.log(title);//undefined
    }

}

正确的代码:

function myfunc(){
    title = "Head";
    console.log(title);//Head
    document.getElementById("test").onclick = function(){
        //some magic...
        console.log(title);//Head
    }

}

希望得到你的帮助。感谢。


不幸的是,你的答案没有帮助。所有这些我都试过,如果这很容易我不会写在这里。不过,我自己做了:

function myfunc(){
            function cls(it){
                return function(){
                    console.log(it);
                }
            }
            title = "head";
            document.getElementById("test").addEventListener("click",cls(title), false);//head
    }

谢谢你,至少你试图提供帮助,也感谢你们。

2 个答案:

答案 0 :(得分:0)

不需要魔法。最好全球化。

title = "Head";
function myfunc(){        
    console.log(title);//Head
    document.getElementById("test").onclick = function(){  // you can't have like this
        console.log(title);//Head
    }    
}

答案 1 :(得分:0)

将标题从myfunc()

中拉出来
var title = "Head";
function myfunc() {
  document.getElement...
}