2

私は問題があります。関数の戻り値を変数に追加しようとしていますが、関数が未定義であると表示されます。これが私のコードです。:

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;
        }
4

1 に答える 1

2

関数コードが、それを呼び出すコードよりももう一度タブで囲まれていることに気づきました。関数のスコープが不適切である可能性があります(たとえば、別の関数の内部で宣言されており、その関数の外部から呼び出している場合)。

関数が未定義として戻ってきた場合、それはほぼ確実にスコープの問題です。関数自体には何の問題もありません。

例えば:

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

var bob = myFunction(); //Error: myFunction is not defined.
于 2012-09-17T18:03:13.253 に答える