jQuery函数返回undefined

时间:2013-12-22 16:39:10

标签: javascript jquery function undefined

我的函数在这里是返回未定义的,出了什么问题?

    function getTaxType() {
            $('.type').each(function() {
                if ($(this).data('tax') === 'form1' && $(this).is(':checked')) {
                    return 'form1';
                }
                else if ($(this).data('tax') === 'form2' && $(this).is(':checked')) {
                    return 'form2';
                }
                else if ($(this).data('tax') === 'form3' && $(this).is(':checked')) {
                    return 'form3';
                }
            });
  }

2 个答案:

答案 0 :(得分:7)

那是因为您从$.each的回调函数返回,而不是从getTaxType返回。

试试这个:

function getTaxType() {
    var result;
    $('.type').each(function() {
        if ($(this).data('tax') === 'form1' && $(this).is(':checked')) {
            result = 'form1';
        }
        else if ($(this).data('tax') === 'form2' && $(this).is(':checked')) {
             result =  'form2';
        }
        else if ($(this).data('tax') === 'form3' && $(this).is(':checked')) {
             result =  'form3';
        }
    });
    return result;
}

答案 1 :(得分:0)

如果是复选框,则可以有多个,这意味着您有多个结果 - 将其存储在数组中。

选择题:

function getTaxType() {
    var result = [];
    $('.type:checked').each(function(i) {
        var tax = $(this).data('tax');
        result[i] = (tax === 'form1' || tax === 'form2' || tax === 'form3') ? tax : false;
    });
    return result;
};

如果您只想要一个结果(单选按钮),则删除结果上的= []和循环中的[i]

单一答案

function getTaxType() {
    var tax = $('.type:checked').data('tax');
    var result = (tax === 'form1' || tax === 'form2' || tax === 'form3') ? tax : false;
    return result;
};

当然,如果它是单一答案(也就是单选按钮),那么你只能拥有这三种形式的答案,这使得它更简单:

function getTaxType() {
    return $('.type:checked').data('tax');
};