【问题标题】:says my function is undefined when assigning to a variable说分配给变量时我的函数未定义
【发布时间】:2012-09-18 02:15:38
【问题描述】:

我有问题。我正在尝试将函数返回值添加到变量中,但它说该函数未定义。这是我的代码。 :

var selectedExpenseList = getSelectedExpenseIDs();

这是我的功能:

    function getSelectedExpenseIDs() {
            var selectedExpensesList = new Array;
            var i = 0;
            $('.expenseCheckBox:checked').each(function () {
                if ($(this)[0].id !== "checkAllExpenses") {
                    selectedExpensesList[i] = $(this)[0].id.split('_')[1];
                    ++i;
                }
            });
            return selectedExpensesList;
        }

编辑:这是我的全部功能:如果有人检查过,我会尝试从列表中删除某些内容。

     var selectedExpenseList;
 function actuallyDeleteTheExpense(canDeleteExpenses) 
 {
     selectedTasksList = getSelectedTaskIDs();
     var deleteTrackers = false, deleteExpenses = false;


     if (canDeleteExpenses && !canDeleteTrackers) 
     {
         $.Zebra_Dialog('Do you wish to remove Expenses?', 
         {
             'type': 'question',
             'title': 'Confirmation',
             'buttons': [
                        {
                            caption: 'Yes', callback: function () {
                                deleteTrackers = false;
                                deleteExpenses = true;
                                doTheDelete(deleteExpenses);
                            }
                        },

                        {
                            caption: 'No',
                            callback: function () {
                                doTheDelete(deleteExpenses);
                            }
                        }
                    ]
         });
     }
            }
            function doTheDelete(doIDeleteExpenses) 
            {
                if (selectedTasksList.length > 0) 
                {
                    $.ajax({
                        type: "POST",
                        //url: "/Tasks/ViewTasks.aspx/deleteTasksAndLinkedItems",
                        url: '<%=ResolveUrl("~/Expenses/ViewExpenses.aspx/deleteSelectedExpense")%>',
                        data: "{ 'TaskIDs': [" + selectedTasksList.join(',') + "], DeleteTrackers : " + doIDeleteTrackers + ", DeleteExpenses : " + doIDeleteExpenses + " }",
                        //fix data
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (data) {
                            var ss = data.d;
                            if (ss.length > 0) {
                                for (var i = 0; i < ss.length; ++i) {
                                    $.noty.consumeAlert({ layout: 'center', type: 'error', dismissQueue: true });
                                    alert(ss[i]);

                                }
                            }
                            $("#viewTasksGrid").flexReload();
                        },
                        error: function (data) {
                            $.noty.consumeAlert({ layout: 'center', type: 'error', dismissQueue: true, modal: true });
                            alert('Error Deleting Tasks');
                            if (window.console) {
                                console.log(data);
                            }
                        }
                    });
                } else {
                    showMessage('No tasks are selected.');
                }
            }
//end delete expense


        function getSelectedExpenseIDs() {
            var selectedExpensesList = new Array;
            var i = 0;
            $('.expenseCheckBox:checked').each(function () {
                if ($(this)[0].id !== "checkAllExpenses") {
                    selectedExpensesList[i] = $(this)[0].id.split('_')[1];
                    ++i;
                }
            });
            return selectedExpensesList;
        }

【问题讨论】:

  • 您介意按照您在代码中的顺序编辑 sn-p 吗?
  • 你的函数调用和函数声明在哪里?您的函数声明可能在 $(document).ready(...) 内吗?
  • 请在fiddle 中添加exact 错误消息和/或简化的测试用例。
  • 是的,它在 $(document).ready 里面

标签: javascript asp.net html css


【解决方案1】:

我注意到,您的函数代码比调用它的代码多了一次选项卡。您的函数的范围可能不正确(例如,它在另一个函数中声明,而您从该函数外部调用它)。

如果您的函数返回为未定义,则几乎可以肯定是范围界定问题。我看不出函数本身有什么问题。

例如:

$(document).ready(function () {
    function myFunction() { 
        return 3;
    } 
});

var bob = myFunction(); //Error: myFunction is not defined.

【讨论】:

  • 我已经发布了我的全部功能。我不确定范围。我正在查看它,但如果他们能找到任何东西,我也会将其发布给其他人
  • 看看我添加的例子,如果这个结构看起来很熟悉,那么这可能是你的罪魁祸首。
  • 我想我可能已经想通了。真是愚蠢。当我调用函数getSelectedTaskID时,它未定义的原因是因为它在这个文件中被调用了getSelectedExpenseIDs()......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 1970-01-01
相关资源
最近更新 更多