读书人

请问个闭包有关问题

发布时间: 2013-01-25 15:55:29 作者: rapoo

请教个闭包问题。


<body>

<div id="divMain"></div>

<script type="text/javascript">

function Test(title)
{
alert(title);
}

function Init(functionName, title)
{
var callFunction = functionName;

return function()
{
var content = '<a href = "#" onclick = callFunction("' + title + '"); >click me</a>';
document.getElementById("divMain").innerHTML = content;
}
}

var aa = Init(Test, 'hello');  
aa();


</script>

</body>


var callFunction作为全局变量放在Function Init外面,则可以弹出对话框,但我这边需要把callFunction定义在function Init中。
所以想采用闭包的形式访问,但发现仍无法调用该函数。谢谢!
[解决办法]
你非要拼接的话,用下面的方法吧。

<script type="text/javascript">
function Test(title){
alert(title);
}
function Init(functionName, title){
var callFunction = functionName;
return function() {
var content = '<a href = "#" onclick = '+callFunction+'("' + title + '"); >click me</a>';
document.getElementById("divMain").innerHTML = content;
}
}
var aa = Init('Test', 'hello');  
aa();
</script>
[解决办法]
var window.callFunction = functionName;
...
onclick = window.callFunction("' + title + '");
...

读书人网 >JavaScript

热点推荐