我的函数在这里是返回未定义的,出了什么问题?
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';
}
});
}
答案 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');
};