как мне вызвать функцию и поместить ее в метод

0

У меня есть такая функция:

$(document).ready(function () {

    $('.SelectID').click(function (e) { 
var output;
        var select = $(this);
        switch (select.text()){
            case "FirstOption":
                var a = ("1");
                break;
            case "SecondOption":
                var b = ("2");
                break;
        }
        var output = [a|| b];
        return output;
    }
    $(document).on("click", "#Soemthinhg", function () {
    data1 = $('#something').val();
    data2 = $(output).val();

    AjaxMethod(data1, data2 )
});
});

Вопрос в том, что когда я запускаю код, он говорит 0x800a138f - ошибка времени выполнения JavaScript: невозможно получить свойство "toLowerCase" неопределенной или нулевой ссылки

Теги:
function

2 ответа

1

Для этого вы можете использовать переменную с закрытой областью

$(document).ready(function () {
    //declare it in a closure scope so that the global scope will not get polluted
    var output;
    $('.SelectID').click(function (e) {
        var select = $(this);
        switch (select.text()) {
            case "FirstOption":
                var a = ("1");
                break;
            case "SecondOption":
                var b = ("2");
                break;
        }
        output = [a || b];
    })
    $(document).on("click", "#Soemthinhg", function () {
        data1 = $('#something').val();
        //here use the closure variable
        data2 = $(output).val();

        AjaxMethod(data1, data2)
    });
});

Использование глобальной переменной (не рекомендуется)

//declare the variable in global scope
var output;
$(document).ready(function () {
    $('.SelectID').click(function (e) {
        var select = $(this);
        switch (select.text()) {
            case "FirstOption":
                var a = ("1");
                break;
            case "SecondOption":
                var b = ("2");
                break;
        }
        output = [a || b];
    })
});
$(document).on("click", "#Soemthinhg", function () {
    data1 = $('#something').val();
    //here use the global variable
    data2 = $(output).val();

    AjaxMethod(data1, data2)
});
  • 0
    Это ответ, который вы ищете. Объявите выход глобально.
  • 0
    Вы поместили функцию onSlick #Soemthinhg внутри функции готовности документа, что если я хочу, чтобы эта функция была готова вне документа?
Показать ещё 4 комментария
0

Вы указали выходную переменную внутри функции document.ready, она не будет доступна вне области видимости. Если вы хотите получить доступ к выходной переменной вне функции document.ready, объявите ее как глобальную переменную.

Вы можете объявить его как глобальную переменную типа var output; вне любой функции

или внутри document.ready функционирует как window.output = [a | b] window.output = [a | b]

$(document).ready(function () {
        $('.SelectID').click(function (e) { 
            var select = $(this);
            switch (select.text()){
                case "FirstOption":
                    var a = ("1");
                    break;
                case "SecondOption":
                    var b = ("2");
                    break;
            }
            window.output = [a|| b];
            return output;
        }
        });

    $(document).on("click", "#Soemthinhg", function () {
        data1 = $('#something').val();
        data2 = $(output).val();

        AjaxMethod(data1, data2 )
    });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню