Today = new Date(); h = Today.getHours(); // Вот тексты сообщений в зависимости от времени суток document.write("<b align=\"center\">"); if (h<12) document.write("Доброе утро! "); else if (h<16) document.write("Добрый день! "); else if (h<23) document.write("Добрый вечер! "); else if (h<5) document.write("Доброй ночи! "); // r = document.referrer; if (r.length > 0) { Site = ""; if (r.indexOf("rambler") >= 0) Site = "Рамблера"; else if (r.indexOf("yandex") >= 0) Site = "Yandex'a"; else if (r.indexOf("aport") >= 0) Site = "Апорта"; if (Site.length > 0) { document.write("<b>О, вы пришли из "); document.write(Site); document.write("!</b>"); } } document.write("</b>"); Эта прога не пишет доброй ночи с 23 до 5. Помогите непонимаю почему!
Первое условие посмотрите внимательней. Если 3 часа ночи, то первое условие выполнится - ведь 4 меньше 12. Делайте более глубокую проверку: if (h > 5 && h < 12) //утро else if (h > 11 && h < 16) //день
if (h>5 && h<12) document.write("Доброе утро! "); else if (h>12 && h<16) document.write("Добрый день! "); else if (h>16 && h<23) document.write("Добрый вечер! "); else if (h>23 && h<5) document.write("Доброй ночи! "); этот кусок сделал так, неработает!
У меня тоже не работает (по моему местному времени сейчас 23 часа). Не работает по простой причине - 23 не входит ни в один из диапазонов условий. Расставьте числа так, чтобы затрагивались все диапазоны.
Чтобы понять логику, заменяйте h на нужную величину (23 в даном случае). Результат сравнения заменяйте на булево значение: if (23 > 16 && 23 < 23) else if (23 > 23 && 23 < 5) Выходит: if (true && false) else if (false && false) Ну и в конец if (false) else if (false) Ни одно не проходит. Нет не покажу. Не потому, что вредный. Тут дело не в программировании, а в математике. До этого нужно дойти самому, чтобы пойти дальше.
Я просто новичёк в этом деле, немогу понять чё ты этим хочешь сделать, можешь полностью мысль написать, я походу разберусь!
Пытаюсь научить Вас понимать математику 3 класса: больше, меньше, больше или равно, меньше или равно. Со стороны программирования - булевы выражения управляют всей логикой. Это особый тип мышления должен быть, сразу тяжело на него перейти.
Ммм, а я помню у нас в первом классе были такие цветные толстые книжечки с паровозиками, и надо было поставить знак < или > или = там, где соответствующее количество паровозиков какого-то цвета. Эх .. времена =))
Так там AND, он требует, чтобы с обеих сторон было true, иначе в конечном итоге он выдаст false. P.S. У меня стальные нервы, у меня стальные нервы, у меня стальные нерсы, у менястальные нервы, умня сталные нрыв, умнястльвы умев..
Cегодня сделал вот так: if (h<12 && h>5) document.write("Доброе утро! "); else if (h<16 && h>12) document.write("Добрый день! "); else if (h<23 && h>16) document.write("Добрый вечер! "); else if (h>23 && h<23,59) document.write("Доброй ночи! "); else if (h<5 && h>=0) document.write("Доброй ночи! "); И всё великолепно заработало...
достаточно выстроить время по возрастанию: [js]if (h<5) document.write("Доброй ночи! "); else if (h<12) document.write("Доброе утро! "); else if (h<16) document.write("Добрый день! "); else if (h<23) document.write("Добрый вечер! "); [/js]
а мозг включить? [js]if (h<5 || 23 <= h) document.write("Доброй ночи! "); else if (h<12) document.write("Доброе утро! "); else if (h<16) document.write("Добрый день! "); else if (h<23) document.write("Добрый вечер! ");[/js]
Оказывается не достаточно выстроить время по возрастанию. Достаточно просто правильно условия прописать. О чем и было сказано выше.
Короче чё париться, у меня всё работает. просто этот переход с 23 и далее както нетак воспринимается, поэтому я сделал их как 2 отдельных условия!
Люди тут есть ктонибудь (с терпением) чтоб я мог к ниму в личку обращаться и по кодам вопросы задавать! Ато каждый раз темы создовать и вопросы задавать.... Я по самоучителю занимаюсь там оказывается очень много не оговорено (например прикол с формами register_globals=oN и тд)? Прикол с 23<12 досихпор недопёр!
Не нужно думать прямолинейно. 23<12 - это выражение. Выражение может быть истинно (true) или ложно (false). Мы же в школе это проходили. В учебнике математики было по одну сторону 5 яблок, по другую - 7, между ними стоял знак <. Мы говорили, что 5 не больше 7, а 7 больше 5, и говорили, что нарисованное неверно. Так же и тут. True - условие выполняется, false - нет. P.S. В личку не отвечаю, я на работе работаю, а дома - отдахаю