Проблемы с использованием оператора и в операторе IF

Я считаю, что проблема связана с оператором &&, поскольку я получаю результат, когда переключаю его на ||. Если я оставлю это &&, результат не вернется.

Мой код ниже.

<!DOCTYPE html>
<html>
<body>

<p id = "greeting"></p></center>

<script>
var time = new Date().getHours();
let phrase = "";

if ((time > 6) && (time < 12)) {
    phrase = "Good Morning";
} else if ((time > 12) && (time < 18)) {
    phrase = "Good Afternoon";
} else if ((time >= 18) && (time <= 6)) {
    phrase = "Good Evening";
}
document.getElementById("greeting").innerHTML = phrase;
</script>

</body>
</html>

Почему && виноват? Видно, это твои условия ...

Rafael 04.10.2018 04:26

Как что-то может быть больше 18, но меньше 6? Это невозможно.

Adrian Brand 04.10.2018 04:56

Да, определенно упустил из виду, думал об этом странным образом. Спасибо вам за помощь.

Andrew 04.10.2018 06:26
Поведение ключевого слова "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
3
32
1

Ответы 1

Ваш последний оператор if никогда не будет оцениваться как true; time не может быть больше (или равен) 18, в то время как он меньше (или равен) 6. Здесь вы ищете инструкцию OR (||), так как time всегда будет либо после 18:00 (> 18), либо до 6:00 (< 6) - это не может быть одновременно:

else if ((time >= 18) || (time <= 6))

Сказав это, это исправление теперь будет охватывать возможные часы все, а это означает, что последнее условие фактически не имеет значения; если ни один из первых двух операторов if не задействован, будет выполнено указанное выше условие всегда. Таким образом, вы можете просто заменить его на else:

var time = new Date().getHours();
let phrase = "";

if ((time > 6) && (time < 12)) {
  phrase = "Good Morning";
} else if ((time > 12) && (time < 18)) {
  phrase = "Good Afternoon";
} else {
  phrase = "Good Evening";
}

document.getElementById("greeting").innerHTML = phrase;
<!DOCTYPE html>
<html>

<body>
  <center>
    <h2>Individual Tech Proficiency 1</h2>
    <h4>Emulator</h4>
    <p id = "greeting"></p>
  </center>
</body>

</html>

Следует просто удалить последний оператор else if и превратить его в else, нет смысла, если есть проверка на оставшиеся часы

Rob Scott 04.10.2018 04:29

Собственно, учитывая, что это последнее условие if теперь охватывает все возможные сценарии, это хороший момент. Я только что обновил свой ответ, чтобы упомянуть об этом.

Obsidian Age 04.10.2018 04:31

Я ценю помощь, спасибо. Итак, моя цель - найти временное окно с 6 до 12, с 12 до 18, с 18 до 6 утра. Есть ли лучший способ сделать это? Я попытался найти промежуточный оператор с диапазоном, но не смог ничего понять. Я знаю, как подойти к этому на Python, но не на JS.

Andrew 04.10.2018 04:59

Нет проблем! Вы можете использовать .includes(), если хотите, чтобы в каждом случае применялась одна и та же логика, но, учитывая, что вы хотите, чтобы логика другой применялась к каждому из трех состояний, вам, вероятно, лучше всего подойдет три отдельных условия if.

Obsidian Age 04.10.2018 05:04

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