Проблема
Это происходит потому, что функция, которая выполняется .each возвращает только из сферы действия этой функции. Он не возвращается с selected_sheet.
В самом деле, если вы в явной форме сделать функцию передается каждому в явной форме возвращает значение, то вы заметите, что г фактически не не устанавливалось:
function selected_sheet() {
$('.sheet_radio').each(function() {
return 5;
});
// nothing is actually being returned
};
z = selected_sheet(); // z is undefined
Решения
Одним из решений являются стандартным набором значение х во внешнем объеме (или оставить его не определено), а затем установить значение х на новое значение, если переключатель проверяется
function selected_sheet() {
var x = 7; // set default to 7
$('.sheet_radio').each(function() {
if (this.checked == true) {
x = 5; // set to new value
console.log(x);
return false; // stop iterating
}
});
return x;
};
Другой метод заключается в запроса с селекторов, чтобы увидеть или нет проверяются радиокнопки:
function selected_sheet() {
if($('.sheet_radio:checked').length > 0) {
return 5;
} else {
return 7; // this is the default if nothing is checked
}
}
Наконец вот чистый раствор JavaScript:
function selected_sheet() {
if(document.querySelector('.sheet_radio:checked') !== null) {
return 5;
} else {
return 7; // this is the default if nothing is checked
}
}
и немногословный версия
function selected_sheet() {
return document.querySelector('.sheet_radio:checked') !== null? 5 : 7;
}
Задать вопрос о создании сообщения. –
Итак, 'console.log' внутри' each' успешно возвращает '5'? – Shawn31313