здесь var rezultatRadio = undefined; - тут не надо присваивать undefined
а эта часть кода function f(data) { … - что должна делать? предупреждение, когда ни один radiobutton не выбран?
Задача состоит не в том, чтобы вывести на страницу сообщение и значение rezultatRadio. Задача - использовать значение rezultatRadio в скрипте function f(data) { … , присвоив его значение новой переменной в скрипте и дальше с ней работать. Если убрать rezultatRadio = undefined; будет не корректно работать. Нужно четкое значение rezultatRadio = undefined, если ничего не выбрано пользователем (и только в этом случае выводить сообщение на экран, что ничего не выбрано).
можно и не алертом выводить это значение, а вставить например где-то в boby страницы (если надо - могу пример привести). Алертом сделала потому что в примере в коде уже был алерт. Не совсем понятно что этот пример должен делать и куда именно передавать значение.
Ошибка у вас в коде не здесь document.getElementsByName(‘nameRadio’), а именно в логике построения вашего кода
МНЕ НЕ НУЖНО ВЫВОДИТЬ ЗНАЧЕНИЕ! И ошибки нет. Код работает. Мне нужно в скрипте (после функции f) присвоить переменной way значение rezultatRadio, выбранное пользователем и дальше в скрипте (!), а не на странице, производить последующие действия с переменной way. А сейчас переменная way не принимает никакого значения.
Так заработает https://jsfiddle.net/ht1wq47o/2/. Лучше проверку на наличие данных делать ближе к месту где получаешь данные (т.е. в onclickRadio). Давай обсудим что прояснить если нужно.
Спасибо, но… Ты описал f(data) и вызвал ее изнутри onclikRadio(), подставив в качестве параметра resultatRadio. Но это не передает значение resultatRadio за пределы onclikRadio().
Мне нужно например так (добавь после твоего скрипта):
var way = rezultatRadio;//???
if (way == 1){
var res = 8;
alert (res);
}
if (way == 2){
var res = 13;
alert (res);
}
Как передать переменной way значение rezultatRadio?
Возможно ты хочешь сделать глобальную переменную. Тогда просто выноси значение на глобальный уровень так:
function onclickRadio() {
var nameRadio = document.getElementsByName('nameRadio');
var rezultatRadio;
for (var i = 0; i < nameRadio.length; i++) {
if (nameRadio[i].type === 'radio' && nameRadio[i].checked) {
rezultatRadio = nameRadio[i].value;
}
}
if (rezultatRadio) {
window.rezultatRadio = rezultatRadio
} else {
alert('Выберите цвет');
}
}
Но тогда другому коду будет очень тяжело работать с этим значением потому что сложно определить когда появится значение в window.rezultatRadio. Просто поставить этот код после кода обработчика события не получится потому что код выполнится сразу же, и в момент выполнения значение window.rezultatRadio будет undefined.
Скорее всего тебе не нужна глобальная переменная в этом коде (она не нужна в 95% сучаев).
Скорее всего тебе нужно выполнить код подобный
if (way == 1) {
var res = 8;
alert(res);
}
if (way == 2) {
var res = 13;
alert(res);
}
в момент когда есть значение из html-я. Для этого просто оберни код функцией и вызови с известными данными:
function p(way) {
if (way == 1) {
var res = 8;
alert(res);
}
if (way == 2) {
var res = 13;
alert(res);
}
}
function onclickRadio() {
var nameRadio = document.getElementsByName('nameRadio');
var rezultatRadio;
for (var i = 0; i < nameRadio.length; i++) {
if (nameRadio[i].type === 'radio' && nameRadio[i].checked) {
rezultatRadio = nameRadio[i].value;
}
}
if (rezultatRadio) {
p(rezultatRadio);
} else {
alert('Выберите цвет');
}
}
Очень сложно понять какую логику работы вы заложили.
Если вы хотите сразу отслеживать выбранное значение в радиокнопках, то следует повесить события onclick на каждый input, а не на кнопку “Подтвердить” и в этом обработчике передавать выбранное значение в глобальную переменную way.
Вот пример: https://jsfiddle.net/pzwoL0n6/4/
Спасибо всем за ответы. Что касается глобальной переменной, то результата не получается. Пробовал. Проблема в том, что результат переменной rezultatRadio мне нужно передать в скрипт three js. А это сложный большой скрипт и обернуть его в функцию тоже не выходит.