Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2011, 16:02
Новичок на форуме
Отправить личное сообщение для vladislav_m Посмотреть профиль Найти все сообщения от vladislav_m
 
Регистрация: 01.04.2011
Сообщений: 9

работа с датами
ребята, помогите плз допилить скрипт.. по введенным датам - он формирует график занятий.. нужно вклинить еще и високосный год.. т.е. если ввести щас 29 февраля 2000 - 1 апреля 2000 "вторник" - то он сформирует, все вторники попавшие в этот диапазон.. но 29 февраля он пропустит и не выведет.((

<html>
<head>
<title>Расписание занятий</title>
<script type="text/javaScript">
var mesyaci = new Array ("январь", "февраль","март",  "апрель" , "май", "июнь","июль", "август","сентябрь", "октябрь","ноябрь","декабрь");
function raspis  (obj)
{  
    if ( ((forma.chislo.value>29)&&(forma.mesyac.value==1))||( (forma.chislo2.value>29)&&(forma.endm.value==1) )   ){
      alert('Таких дат в феврале нет!');
      return;
    }
	
	
    var datanachrab= new Date (obj.god.value,  obj.mesyac.value, obj.chislo.value);
  
    var dataokonchrab= new Date (obj.god2.value,  obj.endm.value, obj.chislo2.value);

    var datatekrab=  new Date (obj.god.value,  obj.mesyac.value, obj.chislo.value);

    var datavib=obj.datavib2.value;

    var pervzandata=datanachrab.getDate()+Number(datavib)- Number(datanachrab.getDay());
    if (datavib < datanachrab.getDay());
   pervzandata=pervzandata+ 7;
     datatekrab.setDate( pervzandata);
 var s1 = "дни занятий "+"\n";

 var datatekzanyat;
 var s=s1;


 for (i=0;datatekrab.getYear () <= dataokonchrab.getYear (); i++)
  { 
    datatekzanyat= datatekrab.getDate ()+" "+mesyaci[Number( datatekrab.getMonth ())]+" "+datatekrab.getYear ()+"\n"
   if  (datatekrab.getYear () < dataokonchrab.getYear ())
        { s= s+datatekzanyat }
   else
         {  if ( datatekrab.getMonth () < dataokonchrab.getMonth () )
              {s=s+datatekzanyat}
            else 
             {  if (datatekrab.getMonth () == dataokonchrab.getMonth ())
                  { if (datatekrab.getDate()<dataokonchrab.getDate())
                      {s =s+datatekzanyat}
                    else
                      { if (datatekrab.getDate()==dataokonchrab.getDate())
                         {s= s+datatekzanyat; }
                       }
                  }
              }
          }
     pervzandata=datatekrab.getDate()+7;
     datatekrab.setDate(pervzandata);
   }
  if (s==s1)
      alert ("Дата введена некорректно!")
  else
     obj.textovik.value = s
}

</script>
</head> 
<body >
<form name="forma">
<table border=3 align='center' bgcolor="#66ff00">
<tr><th><b>Начало занятий</b></th><th><b>Конец занятий</b></th><th><b>Расписание</b></th></tr>
<tr><td><pre>
 число  <input type="text" name="chislo" size=8 value=1>
 месяц  <select name="mesyac" size=1 >
                <option value=0 selected>январь
                <option value=1>февраль
                <option value=2>март
                <option value=3>апрель
                <option value=4>май
                <option value=5>июнь
                <option value=6>июль
                <option value=7>август
                <option value=8 >сентябрь
                <option value=9>октябрь
                <option value=10>ноябрь
                <option value=11>декабрь
              </select>
 год    <input type="text" name="god"  size=8 value='2011'>
</td>
<td><pre>
 число <input type="text" name="chislo2" size=8 value=1>
 месяц <select name="endm" size=1 >
                <option value=0 selected>январь
                <option value=1>февраль
                <option value=2>март
                <option value=3>апрель
                <option value=4>май
                <option value=5>июнь
                <option value=6>июль
                <option value=7>август
                <option value=8>сентябрь
                <option value=9>октябрь
                <option value=10>ноябрь
                <option value=11 >декабрь
              </select>
 год   <input type="text" name="god2" size='8' value='2011'>
</td>
<td rowspan=2>
<textarea cols=18 rows=8 name='textovik'> </textarea> <br>
</td></tr>
<tr><td colspan=2 align=right><pre>
 выберите день занятий: <select name= 'datavib2' size=1>
   <option value=0 >воскресенье
   <option value=1 selected>понедельник
   <option value=2>вторник
   <option value=3>среда
   <option value=4>четверг
   <option value=5>пятница
   <option value=6>суббота
   </select>
</td></tr>
<tr><td colspan=2 align=left>
 <INPUT type="button" value='Сформировать'   onClick="raspis (forma)"><br></td>
<td  align='right'>
  <INPUT type="reset" value='Отменить'>
</td></tr>
</table>
<BR>
</form>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 05.05.2011, 19:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от vladislav_m
if (datavib < datanachrab.getDay());
строка 023 точка с запятой лишняя??
Ответить с цитированием
  #3 (permalink)  
Старый 05.05.2011, 20:40
Новичок на форуме
Отправить личное сообщение для vladislav_m Посмотреть профиль Найти все сообщения от vladislav_m
 
Регистрация: 01.04.2011
Сообщений: 9

нет)) узнал в чем ошибка была..

условие там одно некорректно написано.. код не мой, пришлось разобраться немного)
Ответить с цитированием
  #4 (permalink)  
Старый 05.05.2011, 22:29
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от vladislav_m
нужно вклинить еще и високосный год
<script type="text/javascript">
var i = -1;
while(++i<13) {
    var year = 2000+i;
    document.write((year % 4 ? year : year + ' високосный') +'<br />');
}
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 05.05.2011, 22:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Вариант вычисления дней в месяце и проверки на високосный год...
<script type="text/javascript">
var month = {LastDay : function(Year,Month){ return new Date(Year,Month+1,0).getDate()}},
Year = {IsLeap: function(Year){ return 29 == month.LastDay(Year,1)}};
document.write(month.LastDay(2012,1)); //returns 29 for feb
document.write(Year.IsLeap(2012)); //returns true for 2012
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 08.05.2011, 09:42
Новичок на форуме
Отправить личное сообщение для vladislav_m Посмотреть профиль Найти все сообщения от vladislav_m
 
Регистрация: 01.04.2011
Сообщений: 9

всем спасибо за ответы!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разница между датами Amour Общие вопросы Javascript 4 29.03.2011 21:01
Удаленная работа для JavaScript разработчика yajilt Работа 4 19.03.2011 11:51
Это работа, за неё нужно платить деньги... Kolyaj Оффтопик 20 25.01.2011 20:44
работа со строками в IE8 rimdus Internet Explorer 5 04.09.2010 15:52
небольшая работа - интерфейс в ява скрипте :) int9 Работа 0 08.12.2008 22:51