我有一个名为Check_Reviewed(Form)的函数,并且有一个div作为确认框。我正在此函数中显示并隐藏它,然后再次调用此函数。但是在调用时,它将转到函数的最后一个括号,并且不会执行完整的函数(如调试器所示和经验丰富)。我无法理解这种行为。

代码片段如下:

在HTML文件中,我有一个ID为createdConfirmBoxdisplay 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/

10-12 14:07