日期:2014-05-16  浏览次数:20387 次

请教个闭包问题。

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