Javascript:如何将具有字符串参数的函数作为参数传递给另一个函数

我需要这样做:

<input type="button" value="click" id="mybtn" 
onclick="myfunction('/myController/myAction', 
                   'myfuncionOnOK('/myController2/myAction2', 
                                  'myParameter2');',
                   'myfuncionOnCancel('/myController3/myAction3', 
                                  'myParameter3');');"  />

这个问题的上下文是在onClick上,我需要调用一个javascript函数,这将使我对我提供的url进行ajax调用。它将打开一个模态div与确定和取消按钮。

到这里,没关系但是,当在新的div中单击确定按钮时,我还需要告诉JavaScript函数另一个带有其他参数和url的函数。另一个为“取消”按钮。

问题是我不能正确地传递第二个参数,因为它不能正常逃避,给我javascript错误。

我已经在SO中搜索了其他类似的JavaScript问题,但是它们似乎都覆盖了我需要做的事情。

有人知道如何将这种字符串参数传递给javascript函数?或者也许还有另一个更好的解决方案来传递我没想到的东西。

提前致谢

最佳答案
一种方法是正确地解除引号:

<input type="button" value="click" id="mybtn"
       onclick="myfunction('/myController/myAction', 
               'myfuncionOnOK(\'/myController2/myAction2\', 
                   \'myParameter2\');',
               'myfuncionOnCancel(\'/myController3/myAction3\', 
                   \'myParameter3\');');">

在这种情况下,尽管如此,我认为更好的处理方法是将两个处理程序包含在匿名函数中:

<input type="button" value="click" id="mybtn"
       onclick="myfunction('/myController/myAction', 
                function() { myfuncionOnOK('/myController2/myAction2', 
                             'myParameter2'); },
                function() { myfuncionOnCancel('/myController3/myAction3', 
                             'myParameter3'); });">

然后,你可以从这个函数中调用它们:

function myfunction(url, onOK, onCancel)
{
    // Do whatever myfunction would normally do...

    if (okClicked)
    {
        onOK();
    }

    if (cancelClicked)
    {
        onCancel();
    }
}

这可能不是我的功能实际上是什么样的,但你得到一般的想法。关键是,如果你使用匿名函数,你会有更多的灵活性,并且你的代码也要更加清洁。

转载注明原文:Javascript:如何将具有字符串参数的函数作为参数传递给另一个函数 - 代码日志