<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
</head>
<body><div id="divMain"></div><script type="text/javascript">function Init() 
{
  this.title = "abc";
  var content = '<a href = "#" onclick = Test("' + this.title + '"); >click me</a>'; 
  document.getElementById("divMain").innerHTML = content;
}function Init2()
{
  this.title = "def";
  var callFunction = Test; //采用函数指针的方式调用 
  
   var content = '<a href = "#" onclick = callFunction("' + this.title + '"); >click me</a>';   document.getElementById("divMain").innerHTML = content;
}function Test(title)
{
   alert(title);
   return false;
}Init(); //这个正常
Init2(); //这个单击没弹对话框</script></body>
</html>Init()中的链接单击后,能正常弹出信息,但如果需要采用函数变量的方式(指针),如Init2()中的,就无法单击后弹出信息了。
请问如何修改,谢谢!

解决方案 »

  1.   

    function Init2()
    {
      this.title = "def";
      var callFunction = Test; //采用函数指针的方式调用 
    ----------改成
    var callFunction = Test; //采用函数指针的方式调用
    function Init2()
    {
      this.title = "def";
     
      

  2.   

    var callFunction;
    function Init2()
    {
      this.title = "def";
      callFunction = Test; //采用函数指针的方式调用 
      var content = '<a href = "#" onclick = callFunction("' + this.title + '"); >click me</a>'; 
      document.getElementById("divMain").innerHTML = content;
    }把callFunction的声明放到最外面。
      

  3.   

    callFunction是一个局部变量,在init2()执行结束就被释放了,在你点击的时候就找不到了。你可以用LS给的方式,也可以考虑闭包。看LZ的样子以前是学C的吧