Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2010, 05:34   #1
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию Выделение цветом выходных в календаре

Здравствуйте! Мне нужно выделить в скрипте календаря выходные дни. Как это сделать? Подскажите пожалуйста.
Код:
<!-- Begin
//  SET ARRAYS
var day_of_week = new Array('Вс','Пн','Вт','Ср','Чт','Пт','Сб','Вс');
var month_of_year = new Array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
//  DECLARE AND INITIALIZE VARIABLES
var Calendar = new Date();
var year = Calendar.getYear();	    // Returns year
var month = Calendar.getMonth();    // Returns month (0-11)
var today = Calendar.getDate();    // Returns day (1-31)
var weekday = Calendar.getDay();    // Returns day (1-31)
var DAYS_OF_WEEK = 8;    // "constant" for number of days in a week
var DAYS_OF_MONTH = 31;    // "constant" for number of days in a month
var cal;    // Used for printing
Calendar.setDate(1);    // Start the calendar day at '1'
Calendar.setMonth(month);    // Start the calendar month at now
/* VARIABLES FOR FORMATTING
NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
      tags to customize your caledanr's look. */
var TR_start = '<TR>';
var TR_end = '</TR>';
var highlight_start = '<TD WIDTH="32"><TABLE CELLSPACING=0 BORDER=0 background="81.png"  BORDERCOLOR=660000><TR><TD WIDTH=40><B><CENTER>';
var highlight_end   = '</CENTER></TD></TR></TABLE></B>';
var TD_start = '<TD WIDTH="32"><CENTER>';
var TD_end = '</CENTER></TD>';
/* BEGIN CODE FOR CALENDAR
NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
tags to customize your calendar's look.*/
cal =  '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 background="11.png" BORDERCOLOR="#999999"<TR><TD>';
cal += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2>' + TR_start;
cal += '<TD COLSPAN="' + DAYS_OF_WEEK + '"background="7.png"><CENTER><B>';
cal += month_of_year[month]  + '   ' + year + '</B>' + TD_end + TR_end;
cal += TR_start;
// LOOPS FOR EACH DAY OF WEEK
for(index=1; index < DAYS_OF_WEEK; index++)
{
// BOLD TODAY'S DAY OF WEEK
if(weekday == index)
cal += TD_start + '<B>' + day_of_week[index] + '</B>' + TD_end;
// PRINTS DAY
else
cal += TD_start + day_of_week[index] + TD_end;
}
cal += TD_end + TR_end;
cal += TR_start;
// FILL IN BLANK GAPS UNTIL TODAY'S DAY
for(index=1; index < Calendar.getDay(); index++)
cal += TD_start + '  ' + TD_end;
// LOOPS FOR EACH DAY IN CALENDAR
for(index=0; index < DAYS_OF_MONTH; index++)
{
if( Calendar.getDate() > index )
{
  // RETURNS THE NEXT DAY TO PRINT
  week_day =Calendar.getDay();
  // START NEW ROW FOR FIRST DAY OF WEEK
  if(week_day == 1)
  cal += TR_start;
  if(week_day != DAYS_OF_WEEK)
  {
  // SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
  var day  = Calendar.getDate();
  // HIGHLIGHT TODAY'S DATE
  if( today==Calendar.getDate() )
  cal += highlight_start + day + highlight_end + TD_end;
  // PRINTS DAY
  else
  cal += TD_start + day + TD_end;
  }
  // END ROW FOR LAST DAY OF WEEK
  if(week_day == DAYS_OF_WEEK)
  cal += TR_end;
  }
  // INCREMENTS UNTIL END OF THE MONTH
  Calendar.setDate(Calendar.getDate()+1);
}// end for loop
cal += '</TD></TR></TABLE></TABLE>';
//  PRINT CALENDAR
document.write(cal);
//  End -->
Скрипт нашла в интернете.
kipish_lp вне форума Ответить с цитированием
Старый 06.04.2010, 11:33   #2
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Попробуйте поменять скрипт так:
Код:
//украшательства ячейки
var WD_TD_start = "<td style='text-color:red'>", WD_TD_end="</td>";
for(index=0; index < DAYS_OF_MONTH; index++)
{
if( Calendar.getDate() > index )
{
  // RETURNS THE NEXT DAY TO PRINT
  week_day =Calendar.getDay();
  // START NEW ROW FOR FIRST DAY OF WEEK
  if(week_day == 1)
  cal += TR_start;
  if(week_day != DAYS_OF_WEEK)
  {
  // SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
  var day  = Calendar.getDate();
  // HIGHLIGHT TODAY'S DATE
  if( today==Calendar.getDate() )
  cal += highlight_start + day + highlight_end + TD_end;
  // PRINTS DAY
  else
//вот это нужно добавить
  if(week_day >= DAYS_OF_WEEK - 2)
  cal += WD_TD_start + day + WD_TD_end;
  }
  else
  cal += TD_start + day + TD_end;
  }
  // END ROW FOR LAST DAY OF WEEK
  if(week_day == DAYS_OF_WEEK)
  cal += TR_end;
  }
  // INCREMENTS UNTIL END OF THE MONTH
  Calendar.setDate(Calendar.getDate()+1);
}// end for loop
evgn вне форума Ответить с цитированием
Старый 13.04.2010, 07:04   #3
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Че-то не работает. Вообще, изначально неделя с воскресенья начиналась, потом я методом научного тыка переделала, чтобы с понедельника, добавила еще один день в неделю, может поэтому?
kipish_lp вне форума Ответить с цитированием
Старый 13.04.2010, 16:45   #4
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Вполне вероятно
Это вставить в тоже место:
Код:
//вот это нужно добавить
  if(week_day >= DAYS_OF_WEEK - 2 || week_day == 0)
  cal += WD_TD_start + day + WD_TD_end;
  else
evgn вне форума Ответить с цитированием
Старый 13.04.2010, 17:44   #5
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Числа по диагонали пропали: сверху слева есть, снизу справа - нет.
kipish_lp вне форума Ответить с цитированием
Старый 13.04.2010, 18:17   #6
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Значит чего-то не туда приткнули...
Ну разжую уж...

Код:
<!-- Begin
//  SET ARRAYS
var day_of_week = new Array('Вс','Пн','Вт','Ср','Чт','Пт','Сб','Вс');
var month_of_year = new Array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
//  DECLARE AND INITIALIZE VARIABLES
var Calendar = new Date();
var year = Calendar.getYear();	    // Returns year
var month = Calendar.getMonth();    // Returns month (0-11)
var today = Calendar.getDate();    // Returns day (1-31)
var weekday = Calendar.getDay();    // Returns day (1-31)
var DAYS_OF_WEEK = 8;    // "constant" for number of days in a week
var DAYS_OF_MONTH = 31;    // "constant" for number of days in a month
var cal;    // Used for printing
Calendar.setDate(1);    // Start the calendar day at '1'
Calendar.setMonth(month);    // Start the calendar month at now
/* VARIABLES FOR FORMATTING
NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
      tags to customize your caledanr's look. */
var TR_start = '<TR>';
var TR_end = '</TR>';
var highlight_start = '<TD WIDTH="32"><TABLE CELLSPACING=0 BORDER=0 background="81.png"  BORDERCOLOR=660000><TR><TD WIDTH=40><B><CENTER>';
var highlight_end   = '</CENTER></TD></TR></TABLE></B>';
var TD_start = '<TD WIDTH="32"><CENTER>';
var TD_end = '</CENTER></TD>';
//украшательства ячейки
var WD_TD_start = "<td style='color:red'>", WD_TD_end="</td>";

/* BEGIN CODE FOR CALENDAR
NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
tags to customize your calendar's look.*/
cal =  '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 background="11.png" BORDERCOLOR="#999999"<TR><TD>';
cal += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2>' + TR_start;
cal += '<TD COLSPAN="' + DAYS_OF_WEEK + '"background="7.png"><CENTER><B>';
cal += month_of_year[month]  + '   ' + year + '</B>' + TD_end + TR_end;
cal += TR_start;
// LOOPS FOR EACH DAY OF WEEK
for(index=1; index < DAYS_OF_WEEK; index++)
{
// BOLD TODAY'S DAY OF WEEK
if(weekday == index)
cal += TD_start + '<B>' + day_of_week[index] + '</B>' + TD_end;
// PRINTS DAY
else
cal += TD_start + day_of_week[index] + TD_end;
}
cal += TD_end + TR_end;
cal += TR_start;
// FILL IN BLANK GAPS UNTIL TODAY'S DAY
for(index=1; index < Calendar.getDay(); index++)
cal += TD_start + '  ' + TD_end;
// LOOPS FOR EACH DAY IN CALENDAR
for(index=0; index < DAYS_OF_MONTH; index++)
{
if( Calendar.getDate() > index )
{
  // RETURNS THE NEXT DAY TO PRINT
  week_day =Calendar.getDay();
  // START NEW ROW FOR FIRST DAY OF WEEK
  if(week_day == 1)
  cal += TR_start;
  if(week_day != DAYS_OF_WEEK)
  {
  // SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
  var day  = Calendar.getDate();
  // HIGHLIGHT TODAY'S DATE
  if( today==Calendar.getDate() )
  cal += highlight_start + day + highlight_end + TD_end;
  // PRINTS DAY
  else
  if(week_day >= DAYS_OF_WEEK - 2 || week_day == 0)
  cal += WD_TD_start + day + WD_TD_end;
  else
  cal += TD_start + day + TD_end;
  }
  // END ROW FOR LAST DAY OF WEEK
  if(week_day == DAYS_OF_WEEK)
  cal += TR_end;
  }
  // INCREMENTS UNTIL END OF THE MONTH
  Calendar.setDate(Calendar.getDate()+1);
}// end for loop
cal += '</TD></TR></TABLE></TABLE>';
//  PRINT CALENDAR
document.write(cal);
//  End -->
evgn вне форума Ответить с цитированием
Старый 14.04.2010, 11:36   #7
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Вот, когда ваш код скопировала, и вставила - все получилось, а когда отдельные строчки вставляла (на те же места) - не получалось. Одним словом - криворукая.
Спасибо вам!
kipish_lp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RichEdit - Выделение цветом слов fakir9999 Компоненты Delphi 3 15.06.2009 15:39
Выделение ячейки цветом - StringGrid. Chudo4258 Помощь студентам 1 01.04.2009 07:03
Выделение слов цветом в Memo Костян Пират Общие вопросы Delphi 9 05.03.2009 08:52
Выделение цветом ratgunter Общие вопросы C/C++ 0 05.12.2008 23:22