За последние 24 часа нас посетили 18333 программиста и 1628 роботов. Сейчас ищут 1880 программистов ...

Программа пожелания доброго времени суток. Проблема

Тема в разделе "JavaScript и AJAX", создана пользователем ZioN, 28 авг 2009.

  1. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    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. Помогите непонимаю почему!
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Первое условие посмотрите внимательней. Если 3 часа ночи, то первое условие выполнится - ведь 4 меньше 12.
    Делайте более глубокую проверку:
    if (h > 5 && h < 12) //утро
    else if (h > 11 && h < 16) //день
     
  3. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    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("Доброй ночи! ");


    этот кусок сделал так, неработает!
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    У меня тоже не работает (по моему местному времени сейчас 23 часа). Не работает по простой причине - 23 не входит ни в один из диапазонов условий.
    Расставьте числа так, чтобы затрагивались все диапазоны.
     
  5. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    Как? В вечер и ночь входит. Или я чёто не понимаю? Может покажешь образец...?
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Чтобы понять логику, заменяйте 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)

    Ни одно не проходит.

    Нет не покажу. Не потому, что вредный. Тут дело не в программировании, а в математике. До этого нужно дойти самому, чтобы пойти дальше.
     
  7. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    Я просто новичёк в этом деле, немогу понять чё ты этим хочешь сделать, можешь полностью мысль написать, я походу разберусь!
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Пытаюсь научить Вас понимать математику 3 класса: больше, меньше, больше или равно, меньше или равно.

    Со стороны программирования - булевы выражения управляют всей логикой. Это особый тип мышления должен быть, сразу тяжело на него перейти.
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ммм, а я помню у нас в первом классе были такие цветные толстые книжечки с паровозиками, и надо было поставить знак < или > или = там, где соответствующее количество паровозиков какого-то цвета.
    Эх .. времена =))
     
  10. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    Не юродствуй! Я непонимаю что с "h" тогда делать!
     
  11. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    Какаято нелепость получается, если 23 больше 16 то... полюбому true
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Так там AND, он требует, чтобы с обеих сторон было true, иначе в конечном итоге он выдаст false.

    P.S. У меня стальные нервы, у меня стальные нервы, у меня стальные нерсы, у менястальные нервы, умня сталные нрыв, умнястльвы умев..
     
  13. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    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("Доброй ночи! ");

    И всё великолепно заработало...
     
  14. sorteros

    sorteros Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    54
    Симпатии:
    0
    охереть
     
  15. sorteros

    sorteros Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    54
    Симпатии:
    0
    Kreker, слыш мальчик, не учи его. Это походу бесполезно
     
  16. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    достаточно выстроить время по возрастанию:
    [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]
     
  17. Fduch

    Fduch Активный пользователь

    С нами с:
    1 июл 2009
    Сообщения:
    140
    Симпатии:
    0
    h = 23;
    что будет написано при h=23?
     
  18. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    а мозг включить?
    [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]
     
  19. Fduch

    Fduch Активный пользователь

    С нами с:
    1 июл 2009
    Сообщения:
    140
    Симпатии:
    0
    Оказывается не достаточно выстроить время по возрастанию.
    Достаточно просто правильно условия прописать. О чем и было сказано выше.
     
  20. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    Короче чё париться, у меня всё работает. просто этот переход с 23 и далее както нетак воспринимается, поэтому я сделал их как 2 отдельных условия!
     
  21. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Достаточно ;) Про 24 забыли ?)
     
  22. Fduch

    Fduch Активный пользователь

    С нами с:
    1 июл 2009
    Сообщения:
    140
    Симпатии:
    0
    ненене. все нормально воспринимается, Вам про это уже говорили
     
  23. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Примитивнейшая задача а уже столько постов нагородили... )))
     
  24. ZioN

    ZioN Активный пользователь

    С нами с:
    28 авг 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Узбекистан
    Люди тут есть ктонибудь (с терпением) чтоб я мог к ниму в личку обращаться и по кодам вопросы задавать! Ато каждый раз темы создовать и вопросы задавать.... Я по самоучителю занимаюсь там оказывается очень много не оговорено (например прикол с формами register_globals=oN и тд)? Прикол с 23<12 досихпор недопёр!
     
  25. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Не нужно думать прямолинейно.
    23<12 - это выражение. Выражение может быть истинно (true) или ложно (false).
    Мы же в школе это проходили. В учебнике математики было по одну сторону 5 яблок, по другую - 7, между ними стоял знак <. Мы говорили, что 5 не больше 7, а 7 больше 5, и говорили, что нарисованное неверно.
    Так же и тут. True - условие выполняется, false - нет.

    P.S. В личку не отвечаю, я на работе работаю, а дома - отдахаю :)