首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

请问个闭包有关问题

2013-01-25 
请教个闭包问题。bodydiv iddivMain/divscript typetext/javascriptfunction Test(title){al

请教个闭包问题。


<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 + '"); 
...

热点排行