我需要做这样的事情:
<input type="button" value="click" id="mybtn"
onclick="myfunction('/myController/myAction',
'myfuncionOnOK('/myController2/myAction2',
'myParameter2');',
'myfuncionOnCancel('/myController3/myAction3',
'myParameter3');');" />
Run Code Online (Sandbox Code Playgroud)
这个问题的上下文是在onClick上我需要调用一个javascript函数,它将对我提供的url进行ajax调用.它将使用OK和Cancel按钮打开一个模态div.
到目前为止一切都很好.但是我还需要告诉javascript函数另一个函数与其他参数和在新div中单击OK按钮时要调用的url.另一个用于取消按钮.
问题是我无法正确传递第二个参数,因为它没有正确转义并给我javascript错误.
我已经在SO中搜索了其他类似的Javascript问题,但它们似乎没有涵盖我需要做的事情.
有人知道如何将这种字符串参数传递给javascript函数?或许还有另一个更好的解决方案,传递我没想到的东西.
提前致谢
hbw*_*hbw 18
一种方法是正确地逃避引号:
<input type="button" value="click" id="mybtn"
onclick="myfunction('/myController/myAction',
'myfuncionOnOK(\'/myController2/myAction2\',
\'myParameter2\');',
'myfuncionOnCancel(\'/myController3/myAction3\',
\'myParameter3\');');">
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,我认为更好的方法是将两个处理程序包装在匿名函数中:
<input type="button" value="click" id="mybtn"
onclick="myfunction('/myController/myAction',
function() { myfuncionOnOK('/myController2/myAction2',
'myParameter2'); },
function() { myfuncionOnCancel('/myController3/myAction3',
'myParameter3'); });">
Run Code Online (Sandbox Code Playgroud)
然后,你可以从内部调用它们myfunction:
function myfunction(url, onOK, onCancel)
{
// Do whatever myfunction would normally do...
if (okClicked)
{
onOK();
}
if (cancelClicked)
{
onCancel();
}
}
Run Code Online (Sandbox Code Playgroud)
这可能不是myfunction实际的样子,但你得到了一般的想法.关键是,如果你使用匿名函数,你会有更多的灵活性,并且你的代码也更加清晰.
试试这个:
onclick="myfunction(
'/myController/myAction',
function(){myfuncionOnOK('/myController2/myAction2','myParameter2');},
function(){myfuncionOnCancel('/myController3/myAction3','myParameter3');}
);"
Run Code Online (Sandbox Code Playgroud)
然后你只需要将这两个函数调用传递给myfunction:
function myfunction(url, f1, f2) {
// …
f1();
f2();
}
Run Code Online (Sandbox Code Playgroud)