我有一个名为Check_Reviewed(Form)
的函数,并且有一个div
作为确认框。我正在此函数中显示并隐藏它,然后再次调用此函数。但是在调用时,它将转到函数的最后一个括号,并且不会执行完整的函数(如调试器所示和经验丰富)。我无法理解这种行为。
代码片段如下:
在HTML文件中,我有一个ID为createdConfirmBox
和display
hidden
的div。
JS函数:
function hideBox(boxName){
$("#"+boxName).hide();
$("bl").hide();
}
function createConfirmBox(name){
var confirmBox = $("#createdConfirmBox");
var content = "<div id='cross_createdConfirmBox_"+name+"' class='cross'>X</div><span id='spanCreatedConfirmBox_"+name+"' style='text-align:center; font-size:18px; line-height:25px; width:580px; padding:7px; font-style:italic; background-color:white; display:inline-block; border-radius:10px;'></span><br><br><div style='text-align:center;' id='divCreatedConfirmBox_"+name+"'></div><br><div style='text-align:center;'><button class='btn btn-primary' type='button' id='btn_createdConfirmBox_yes_"+name+"' style='padding:5px 25px; margin-right:40px; font-size:18px;' >YES</button><button class='btn btn-cancel' type='button' style=' padding:5px 25px; font-size:18px; margin-left:40px;' id='btn_createdConfirmBox_no_"+name+"'>NO</button></div><br>";
confirmBox.html(content);
}
function Check_review(Form){
...
...
...
var company_new = $("#company").val().trim();
if(company_old && company_old!="" && company_new==""){
createConfirmBox("company");
$("#createdConfirmBox").attr("box-made-for","company");
$("#spanCreatedConfirmBox_company").html("<label style='color:red;'><b>Warning!!!</b></label><br>You have removed <b>Company Name</b> from Contact Details.<br><br><span style='padding:7px;display:inline-block;'>Existing Company Name: <b>"+company_old+"</b><br>New Company Name: <label style='color:#c8c8c8;'>Removed<label></span>");
$("#divCreatedConfirmBox_company").html("<label style='color:#464444;'>Do you want to continue without <b>Company Name?</b></label>");
$("#btn_createdConfirmBox_yes_company").on('click',function(){
company_old="";
$("#company").val("");
hideBox("createdConfirmBox");
Check_Reviewed(Form);
});
$("#btn_createdConfirmBox_no_company").on('click',function(){
$("#company").val(company_old);
hideBox("createdConfirmBox");
Check_Reviewed(Form);
});
$("#cross_createdConfirmBox_company").on('click',function(){
$("#company").val(company_old);
hideBox("createdConfirmBox");
Check_Reviewed(Form);
});
$("#createdConfirmBox").show();
$("#bl").show();
return true;
}
}
因此,正如我在单击按钮
btn_createdConfirmBox_no_company
时所说的那样,它会转到单击按钮时定义的功能。当涉及到行Check_Reviewed(Form);
时,它将转到函数}
的最后一行,而不执行其中的代码。 Yhen转到单击功能});
的最后一行,然后退出。我无法理解这种行为。
如果您还有其他方法可以完成工作,请解释一下,因为我想在单击任何按钮时调用此函数
Check_Reviewd(Form);
,而无需创建Form
全局变量。 最佳答案
实际上,问题出在函数上方的代码中。通过使用return false将其移出函数。我使用断点来达到此目的。原因是它使ajax请求成功时禁用了该复选框,而该ajax请求在城市名称更改时就被触发,并且由于此禁用复选框,我总是在完成该功能之前就退出了该功能。
我知道这是一个非常愚蠢的错误,并且缺乏知识。谢谢大家,感谢他们的回应和宝贵的时间。
关于javascript - 递归不能正常工作并且在不执行定义的情况下退出功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46176967/