-4

任务很简单,但我的经验不足以解决它。我需要在 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
    }

谢谢您,至少您试图提供帮助,也感谢您的缺点。

4

2 回答 2

0

不需要魔法。最好在全球范围内拥有它。

title = "Head";
function myfunc(){        
    console.log(title);//Head
    document.getElementById("test").onclick = function(){  // you can't have like this
        console.log(title);//Head
    }    
}
于 2013-07-17T15:20:55.557 回答
0

将标题拉出myfunc()

var title = "Head";
function myfunc() {
  document.getElement...
}
于 2013-07-17T15:21:20.170 回答