代码之家  ›  专栏  ›  技术社区  ›  Patrick Desjardins

Javascript将函数传递到参数?

  •  1
  • Patrick Desjardins  · 技术社区  · 16 年前

    我使用JQuery对话框,并从PHP中为按钮构建一些外接程序。为了能够从服务器端添加代码,我通过参数传递了一个方法。问题是FireBug告诉我该方法未定义:

    alt text

    okHandler是这个方法调用的参数,用于引发对话框,它包含一个简单的警报消息,稍后是一些Ajax调用。知道它为什么不起作用吗?

    alt text

    3 回复  |  直到 6 年前
        1
  •  4
  •   John Kugelman Michael Hodel    16 年前

    看起来okHandler是一个包含函数声明的字符串,而不是实际的函数?你有

    okHandler = "function anonymous(){alert('This is a test');}";
    

    而不是

    okHandler = function(){alert('This is a test');};
    
        2
  •  0
  •   Community Mohan Dere    8 年前

    As John Kugelman notes okHandler 似乎是一个字符串。如果它是一个函数,它会工作得更好。。。但是,如果必须是字符串,则需要传递它 eval() 要实际执行它:

    eval( "(" + okHandler + ")()" )
    
        3
  •  0
  •   Drew Wills    16 年前

    在出现错误时是否加载了okHandler()函数(作为有效的JS对象——而不是字符串)?

    我认为这样称呼“如果(foo!=null)“如果foo还没有被声明为某个变量。FireBug会抱怨:“okHandler没有定义。”

    试试这样的。。。

    var myHandlers = {};
    // Load okHandler as a member of myHandlers when applicable here...
    $('#dialog'+idbox)...
        "Oky": function() {
            myHandlers.okHandler && myHandlers.okHandler();
            ...
        }
    }
    
    推荐文章