<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中。
所以想采用闭包的形式访问,但发现仍无法调用该函数。谢谢!

解决方案 »

  1.   

    <a href = "#" onclick ="fnName()" >click me</a> 
    标准写法是fnName只能是个全局的函数你先要知道生成的的HTML代码,运行和你的闭包没关系了
      

  2.   

    你非要拼接的话,用下面的方法吧。<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>
      

  3.   

    var  window.callFunction = functionName;
    ...
    onclick = window.callFunction("' + title + '"); 
    ...
      

  4.   

    稍微修改一下就可以了:<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 = "#" >click me</a>'; 
          document.getElementById("divMain").innerHTML = content;
          var a = document.getElementById("divMain").childNodes[ 0 ];
          a.onclick = function() { callFunction(title); );

      }    
    }
     
     var aa = Init(Test, 'hello');  
     aa(); 
     
     
    </script>
     
    </body>