回调函数-javascript
我有通用的功能,我需要在不同的地方使用。问题是有些地方我需要传递没有参数的函数,有些地方需要参数来回调函数。我如何处理这两种情况回调函数-javascript,javascript,jquery,Javascript,Jquery,我有通用的功能,我需要在不同的地方使用。问题是有些地方我需要传递没有参数的函数,有些地方需要参数来回调函数。我如何处理这两种情况 function deletePrompt(message, callback){ $("#deleteModelWindow").modal({ containerCss: { width: 320, height: 180, overflow: 'hidden'}, onSho
function deletePrompt(message, callback){
$("#deleteModelWindow").modal({
containerCss: {
width: 320,
height: 180,
overflow: 'hidden'},
onShow: function(dialog){ dialog.wrap.css('overflow','hidden'); }
});
document.getElementById("spanid").innerHTML = message;
$("#deleteModelWindow").on('click', "#deleteConfirm", function(){
if (callback !== undefined) {
callback();
} else {
callback(parameter1,parameter2);
}
$.modal.close();
});
$("#deleteModelWindow").on('click', "#cancel", function(){
$.modal.close();
});
}
致电:
<input id="deleteInvitationBtn" class="buOrange large" type="button" name="submit" value="Delete Invitation" onClick="deletePrompt('Are you sure you want to delete the invitation?', deleteInvitation('${invitation.invitationId}','${invitation.clientActivationCode}'))">
在这里,在onclick中,在重定向到deletePrompt()之前,它直接重定向到DeleteInvestment()
有人能解释为什么会发生这种情况吗?没关系。JavaScript函数非常灵活,您可以向它们传递比预期更多或更少的参数;在函数中,任何未传递的已声明参数都将具有值
未定义
。您传递的任何未声明的参数都将作为参数
伪数组的一部分提供
例如:
功能测试(标签a、b){
var n;
log(“----”+标签);
snippet.log(“a=“+a”);
snippet.log(“c=“+b”);
如果(arguments.length>3){
log(“额外参数:”);
对于(n=3;n
您可以使用object或检查消息
和回调
是否未定义:
function deletePrompt(message, callback) {
$("#deleteModelWindow").modal({
containerCss: {
width: 320,
height: 180,
overflow: 'hidden'},
onShow: function(dialog){ dialog.wrap.css('overflow','hidden'); }
});
if (message !== undefined) {
document.getElementById("spanid").innerHTML = message;
}
if (callback !== undefined) {
$("#deleteModelWindow").on('click', "#deleteConfirm", function() {
callback();
callback(parameter1,parameter2);
$.modal.close();
});
}
$("#deleteModelWindow").on('click', "#cancel", function(){
$.modal.close();
});
}
JSFiddle演示了这个概念:
最好将绑定逻辑拆分为更小的函数,使函数更干净。您可以在回调函数中使用“arguments”对象来处理它,对吗?您可以在下面看到我如何调用该函数。onclick=“deletePrompt(‘确实要删除用户吗?’,deleteUser)”>onclick=“deletePrompt(‘确实要删除邀请吗?’,deleteInvitation,deleteInvitation(‘${invitation.invitationId}’,‘${invitation.clientActivationCode}’)抱歉,无法工作。我正在使用如下。对我来说,回调返回false$(“#deleteModelWindow”)。在('click',“#deleteConfirm”,函数(){if(callback!==undefined){callback(parameter1,parameter2);}else{callback();}$.modal.close()});onclick only它正在调用deleteInvestment方法。