Как вы ссылаетесь на проверенное значение в элементе управления радиоуправлением для функции javascript?

Мне нужен выходной элемент html-формы для отображения содержимого, основанного на любом элементе, отмеченном с помощью набора переключателей. Когда мне нужно только отобразить, какое значение проверено, оно работает нормально, но когда я пытаюсь использовать функцию для переключения вывода, оператор if не работает - функция всегда возвращает 'Farenheit', как будто option.value остается 'celcius '(независимо от того, как часто меняются местами переключатели):

<script>
    function switchOpt(opt){
        if (opt='celcius'){
        return 'Farenheit';
        }else{
        return 'Celcius';
        }
    }
</script>
<form oninput = "swap.value=switchOpt(option.value)">
    <input type = "radio" name = "option" value = "celcius" checked /> Celcius <br />
    <input type = "radio" name = "option" value = "farenheit" /> Farenheit <br />
    <output name = "swap"></output>
</form>

Такая же настройка для оператора if работает и в других функциях, поэтому я предполагаю, что проблема в том, что существует несоответствие типов данных или что-то в том, как я пытаюсь сослаться на значения здесь.

Как делать вы ссылаетесь на отмеченное значение в наборе переключателей внутри функции?

примечание: "Фаренгейт" - правильное написание. :)

i alarmed alien 10.08.2018 12:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

function switchOpt(opt) {
  if (opt == 'farenheit') {
    return 'Farenheit';
  } else {
    return 'Celcius';
  }
}
<form oninput = "swap.value=switchOpt(option.value)">
  <input type = "radio" name = "option" value = "celcius" checked /> Celcius <br />
  <input type = "radio" name = "option" value = "farenheit" /> Farenheit <br />
  <output name = "swap"></output>
</form>

Обратите внимание на изменение условия if ...

Оператор === проверяет и значение, и тип, тогда как == сравнивает только значение. Например, 3 == '3' вернет истину, даже если одна строка, а другая число, и во избежание этого следует использовать ===. Поэтому я бы сказал, что безопаснее использовать первое, хотя здесь я использовал == :) Single = для назначения. Например, var x = document.getElementById (‘box’);

В свете разницы между этими двумя ответами, не могли бы вы рассказать, почему вы использовали == вместо ===?

Isaac Reefman 11.08.2018 00:39

Оператор === проверяет и значение, и тип, тогда как == касается только значения. Я бы сказал, что безопаснее использовать первое, хотя я использовал == здесь :)

ConsoleLog 11.08.2018 09:01

Это для назначения. Например, var x = document.getElementById (‘box’);

ConsoleLog 12.08.2018 08:35

аааааааааааааааааааааааааааааааа! Все это имеет смысл сейчас! Теперь я хочу отметить ваш ответ галочкой из-за всей добавленной вами помощи в комментариях, хотя другая немного более полная ... Скажу вам, что, добавьте эту информацию в обновление вашего ответа и у тебя вышло.

Isaac Reefman 12.08.2018 12:18

Извините, я должен был быть более подробным - я обновил ответ сейчас. Ваше здоровье

ConsoleLog 12.08.2018 12:36

Вы должны использовать === в своем предложении if вместо =.

Кроме того, всегда добавляйте метки для переключателей и флажков.

<script>
    function switchOpt(opt){
        if (opt==='celcius'){
        return 'Farenheit';
        }else{
        return 'Celcius';
        }
    }
</script>
<form oninput = "swap.value=switchOpt(option.value)">
    <input type = "radio" name = "option" id = "celcius" value = "celcius" checked /> <label for = "celcius">Celcius</label> <br />
    <input type = "radio" name = "option" id = "farenheit" value = "farenheit" /><label for = "farenheit"> Farenheit</label> <br />
    <output name = "swap"></output>
</form>

В свете разницы между этими двумя ответами, не могли бы вы рассказать, почему вы использовали === вместо ==?

Isaac Reefman 11.08.2018 00:39

true == 'true' вернет true, true === 'true' вернет false. === - строгое сравнение. Хорошая практика - использовать строгое сравнение, потому что == иногда приводит к проблемам, которые трудно анализировать. Просто введите === в Google, и вы прочтете об этом достаточно.

Emil Alkalay 11.12.2018 10:21

Другие вопросы по теме