Мне нужен выходной элемент 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 работает и в других функциях, поэтому я предполагаю, что проблема в том, что существует несоответствие типов данных или что-то в том, как я пытаюсь сослаться на значения здесь.
Как делать вы ссылаетесь на отмеченное значение в наборе переключателей внутри функции?
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’);
В свете разницы между этими двумя ответами, не могли бы вы рассказать, почему вы использовали ==
вместо ===
?
Оператор === проверяет и значение, и тип, тогда как == касается только значения. Я бы сказал, что безопаснее использовать первое, хотя я использовал == здесь :)
Это для назначения. Например, var x = document.getElementById (‘box’);
аааааааааааааааааааааааааааааааа! Все это имеет смысл сейчас! Теперь я хочу отметить ваш ответ галочкой из-за всей добавленной вами помощи в комментариях, хотя другая немного более полная ... Скажу вам, что, добавьте эту информацию в обновление вашего ответа и у тебя вышло.
Извините, я должен был быть более подробным - я обновил ответ сейчас. Ваше здоровье
Вы должны использовать === в своем предложении 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>
В свете разницы между этими двумя ответами, не могли бы вы рассказать, почему вы использовали ===
вместо ==
?
true == 'true' вернет true, true === 'true' вернет false. === - строгое сравнение. Хорошая практика - использовать строгое сравнение, потому что == иногда приводит к проблемам, которые трудно анализировать. Просто введите === в Google, и вы прочтете об этом достаточно.
примечание: "Фаренгейт" - правильное написание. :)