Javascript 输入意外结束(第1行)和未定义的函数?

Javascript 输入意外结束(第1行)和未定义的函数?,javascript,function,encoding,input,Javascript,Function,Encoding,Input,所以我的JS中有一个意外的输入结尾,它在第1行,我真的不明白它是什么,下面是代码: window.HandlePageCommand = function (commandName) { document.getElementById("buffer").innerHTML = commandName + " | " + window.ActiveForm.Name; var activeForm = window.ActiveForm; var call; v

所以我的JS中有一个意外的输入结尾,它在第1行,我真的不明白它是什么,下面是代码:

window.HandlePageCommand = function (commandName) {

    document.getElementById("buffer").innerHTML = commandName + " | " + window.ActiveForm.Name;
    var activeForm = window.ActiveForm;
    var call;
    var callback;
    var requestData;
    var grid;

    if (commandName === "CANCEL") {
        Exertus.MainModalPanel.Hide();
        return;
    }

    if (commandName === "ADD_PERIOD") {

        target = activeForm.Sections[1];
        window.SelectedState = {};
        activeForm.BindUI(window.SelectedState);
        grid = window.RegisteredControls.Grids["Semestres"];

        grid.AddedEntities = [];
        grid.DeletedEntities = [];
        grid.Databind([]);
        Exertus.MainModalPanel.Show("Detalle", target);
        return;
    }

    if (commandName === "ADD_MATERIAL") {

        target = activeForm.Sections[1];
        window.SelectedState = {};
        activeForm.BindUI(window.SelectedState);
        grid = window.RegisteredControls.Grids["GRID_DE_MATERIALES"];

        grid.AddedEntities = [];
        grid.DeletedEntities = [];
        grid.Databind([]);
        Exertus.MainModalPanel.Show("DETAIL", target);
        return;
    }


    if (activeForm.Name === "Periodos") {

        callback = function (responseData) {
            var innerGrid = window.RegisteredControls.Grids["Semestres"];
            var responseInfo = jQuery.parseJSON(responseData);
            innerGrid.Databind(responseInfo.Users);
            window.SetLoading(false);
            Exertus.MainModalPanel.ShowText("Notificación", "Se han guardado los cambios.");
        }

        if (window.ActiveForm.Validate() != true) {
            return;
        }

        window.SetLoading(true);
        call = new Exertus.ServerCall("MainWebModule");
        this.SelectedPeriod = this.SelectedPeriod || {};
        activeForm.BindEntity(this.SelectedPeriod);
        grid = window.RegisteredControls.Grids["Semestres"];

        requestData = {
            PeriodData: this.SelectedPeriod
        }
        call.Execute("SavePeriodChanges", requestData, callback);
        return;

    }

    if (commandName === "GUARDAR") {

        if (activeForm.Name === "Factores de Venta 1") {
            var callback = function (responseData) {
                window.OriginalFactors = jQuery.extend({}, window.FactorsInfo);
                window.SetLoading(false);
                Exertus.MainModalPanel.ShowText("Notificación", "Se han guardado los cambios.");
            }

            if (window.ActiveForm.Validate() != true) {
                return;
            }

            window.SetLoading(true);
            var call = new Exertus.ServerCall("MainWebModule");
            window.FactorsInfo = window.FactorsInfo || {};
            activeForm.BindEntity(window.FactorsInfo);
            call.Execute("SaveFactors", window.FactorsInfo, callback);
            return;
        }


            if (commandName === "SAVE") {

        if (activeForm.Name === "Direcciones") {
            var callback = function (responseData) {
                window.OriginalAddress = jQuery.extend({}, window.AddressInfo);
                window.SetLoading(false);
                Exertus.MainModalPanel.ShowText("Notificación", "Se han guardado los cambios.");
            }

            if (window.ActiveForm.Validate() != true) {
                return;
            }

            window.SetLoading(true);
            var call = new Exertus.ServerCall("MainWebModule");
            window.AddressInfo = window.AddressInfo || {};
            activeForm.BindEntity(window.AddressInfo);
            call.Execute("SaveAddress", window.AddressInfo, callback);
            return;
        }

            if (commandName === "SAVE") {

        if (activeForm.Name === "Materiales") {
            var callback = function (responseData) {
                window.OriginalMaterials = jQuery.extend({}, window.MaterialsInfo);
                window.SetLoading(false);
                Exertus.MainModalPanel.ShowText("Notificación", "Se han guardado los cambios.");
            }

            if (window.ActiveForm.Validate() != true) {
                return;
            }

            window.SetLoading(true);
            var call = new Exertus.ServerCall("MainWebModule");
            window.MaterialsInfo = window.MaterialsInfo || {};
            activeForm.BindEntity(window.MaterialsInfo);
            call.Execute("SaveMaterials", window.MaterialsInfo, callback);
            return;
        }

    if (commandName === "CANCEL") {
        Exertus.MainModalPanel.Hide();
        return;
    }

    if (commandName === "GUARDAR") {

        if (activeForm.Name === "Factores de Venta 2") {
            var callback = function (responseData) {
                window.OriginalFactorsBoundaries = jQuery.extend({}, window.FactorsBoundariesInfo);
                window.SetLoading(false);
                Exertus.MainModalPanel.ShowText("Notificación", "Se han guardado los cambios.");
            }

            if (window.ActiveForm.Validate() != true) {
                return;
            }

            window.SetLoading(true);
            var call = new Exertus.ServerCall("MainWebModule");
            window.FactorsBoundariesInfo = window.FactorsBoundariesInfo || {};
            activeForm.BindEntity(window.FactorsBoundariesInfo);
            call.Execute("SaveFactors", window.FactorsBoundariesInfo, callback);
            return;
        }

    if (commandName === "CANCEL") {
        Exertus.MainModalPanel.Hide();
        return;
    }

    if (commandName === "SAVE_CHANGES") {
        var callback = function (responseData) {
            var innerGrid = arguments.callee.Grid;
            var entities = jQuery.parseJSON(responseData);
            window.FamilyProductsTypes = entities;

            innerGrid.AddedEntities = [];
            innerGrid.ModifiedEntities = {};
            innerGrid.DeletedEntities = [];

            innerGrid.Databind(entities);
            window.SetLoading(false);
            Exertus.MainModalPanel.ShowText("Notificación", "Se han guardado los cambios.");
        }


        var grid = window.RegisteredControls.Grids["Artículos"];

        if (grid.HasChanges() != true) {
            Exertus.MainModalPanel.ShowText("Notificación", "No hay cambios que guardar.");
            return;
        }

        if (grid.Validate() != true) {
            return;
        }

        if (commandName === "DISCARD_CHANGES") {
        var callback = function () {
            var innerGrid = arguments.callee.Grid;

            innerGrid.AddedEntities = [];
            innerGrid.DeletedEntities = [];
            innerGrid.Databind(innerGrid.OriginalEntities);

            jQuery(innerGrid.Root).attr("class", "");
            delete window.ModifiedGrids[innerGrid.Name];

            Exertus.MainModalPanel.ShowText("Notificación", "Se han descartado los cambios.");
        }

        var grid = window.RegisteredControls.Grids.Artículos;
        callback.Grid = grid;
        Exertus.MainModalPanel.Confirm("Confirmación", "¿Confirma que desea descartar los cambios?", callback);
    }

    if (commandName === "CANCELAR") {
        var callback = function () {
            var innerGrid = arguments.callee.Grid;

            innerGrid.AddedEntities = [];
            innerGrid.DeletedEntities = [];
            innerGrid.Databind(innerGrid.OriginalEntities);

            jQuery(innerGrid.Root).attr("class", "");
            delete window.ModifiedGrids[innerGrid.Name];

            Exertus.MainModalPanel.ShowText("Notificación", "Se han cancelado los cambios.");
        }

        var grid = window.RegisteredControls.Grids["Carga De Archivos"];
        callback.Grid = grid;
        Exertus.MainModalPanel.Confirm("Confirmación", "¿Confirma que desea cancelar los cambios?", callback);
    }

}
错误标记在第一行,第一行是空的,所以我不知道那可能是什么

我的另一个问题是Chrome说我没有定义一个函数,但我已经在所有需要定义它的文档中定义了它,你们能告诉我是否有任何工具可以帮助我找到它没有定义的地方吗?
谢谢

我想你忘了一个括号,看看下面的代码:

if (commandName === "DISCARD_CHANGES") {
var callback = function () {

就我所知,if语句没有结尾}

对于代码段中的所有
{
,大约缺少5个
}

这会创建一个
SyntaxError
,因为解析器正在尝试匹配每一对,并且在它能够匹配之前就用完了代码(因此,“意外结束”)。此错误还使
函数
定义无效,这就是为什么其他可能尝试使用它的代码不存在该定义的原因

要获得帮助的工具,您可以尝试。它可能有点严格,但会扫描一段代码,并记录它认为有帮助的任何建议。而且,它是可配置的,因此可以扫描复选框列表以调整它给出的警告类型

不过,最好的猜测是,他们开始缺少:

if (commandName === "GUARDAR") {

    if (activeForm.Name === "Factores de Venta 1") {
        var callback = function (responseData) {
            window.OriginalFactors = jQuery.extend({}, window.FactorsInfo);
            window.SetLoading(false);
            Exertus.MainModalPanel.ShowText("Notificación", "Se han guardado los cambios.");
        }

        if (window.ActiveForm.Validate() != true) {
            return;
        }

        window.SetLoading(true);
        var call = new Exertus.ServerCall("MainWebModule");
        window.FactorsInfo = window.FactorsInfo || {};
        activeForm.BindEntity(window.FactorsInfo);
        call.Execute("SaveFactors", window.FactorsInfo, callback);
        return;
    }

//} <-- missing
if(commandName==“GUARDAR”){
如果(activeForm.Name==“系数1”){
var回调=函数(响应数据){
window.OriginalFactors=jQuery.extend({},window.FactorsInfo);
设置加载(假);
Exertus.MainModalPanel.ShowText(“Notificación”,“Se han guardado los cambios”);
}
if(window.ActiveForm.Validate()!=true){
返回;
}
设置加载(true);
var call=new Exertus.ServerCall(“MainWebModule”);
window.FactorsInfo=window.FactorsInfo | |{};
BindEntity(window.FactorsInfo);
call.Execute(“SaveFactors”,window.FactorsInfo,callback);
返回;
}

//}谢谢你,乔纳森!那个就是那个些花括号,就是那个丢失的,多亏了你们,问题解决了!