Показать сообщение отдельно
  #2 (permalink)  
Старый 25.03.2012, 15:39
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Насколько я понял (не знаю как звучит ваше имя), вы хотите получить более читабельный и легко модернизируемый код (это и увеличивает вероятность его работоспособности), так как в нём наблюдаются некоторые одинаковые части, а также много операторов if-else.
Если это так, то
1) используйте оператор switch вместе с оператором if (switch более читабельный, но выражение в нём
должно возвращать конкретное значение, таким значение в вашем случае будут часы, для проверки неравенств придётся использовать if);
2) повторяющиеся конструкции обозначьте более короткими именами;
3) попробуйте в принципе сократить условия.

Комментирую.
Если вы понимаете, что h - это часы, то зачем обозначать минуты длинным словом minutes, логичнее использовать обозначение просто m.
Зачем использовать лишнюю переменную b, если она нужна лишь для того, чтобы установить значение всего лишь одного элемента (в вашем случае этот элемент sebastian.children[0].innerHTML), логичнее сразу присваивать это значение.
Элемент sebastian.children[0].innerHTML необходимо сократить в написании, например, так g = sebastian.children[0]; (ссылка на ваш элемент children), а далее g.innerHTML.
Зачем делать проверки подобные m>0, если m итак заведомо больше нуля.

Так как я не знаю, что вы имели ввиду под элементом sebastian.children[0], то привожу пример, для простого div, в который по нажатию кнопки "Сейчас", будет выводиться ответ.
В данном коде я использую разбивку по часам, что довольно удобно, а так как вариантов у вас много, привожу для примера несколько первых из них.
Итак, вот он код:

Код:
<div id=s style="background: yellow">Нажми на кнопку, что понять, что сейчас</div>

<button 
  onclick = "
    data = new Date();
    h = data.getHours();
    m = data.getMinutes(); 
    g = document.getElementById('s');

    switch (h)
    {
    case 8: {g.innerHTML = 'Пары еще не начались'; break}
    case 9: 
      { 
      if (m<45) {g.innerHTML = 'Первый час, первой пары'; break}
      else
        if (m<50) {g.innerHTML = 'Перемена 5 минут'; break}
        else
          {g.innerHTML = 'Второй час, первой пары'; break}
      } 
    case 10: 
      {  
      if (m<35) {g.innerHTML = 'Второй час, первой пары'; break}
      else
        if (m<45) {g.innerHTML = 'Конец первой пары. Перемена на 10 минут'; break}   
        else
          {g.innerHTML = 'Первый час, второй пары'; break}          
      }
    default: g.innerHTML='Отдыхаем!!'
    }
">Сейчас
</button>

Последний раз редактировалось bes, 25.03.2012 в 16:01. Причина: уточнение
Ответить с цитированием