ubernoob
@ubernoob

Как вывести числа календаря в таблице?

На JS собрал все данные, осталось только отрисовать финальную таблицу с календарём. Не могу понять как пропустить первые 3 ячейки таблицы в первой строке если месяц начинается с четверга и разместить первое число именно с 4 ячейки а после 7й сделать "перенос строки". Реализации посмотрел разные, например:
do {
    // Начало строки таблицы
    if (index%7==0) {
      tmp+='<tr>';
    }
    // Пустые ячейки до начала месяца или после окончания
    if ((index<start_day) || (index>=(total_days+start_day))) {
      tmp+='<td class="grayed">&nbsp;<\/td>';
    }

или
for (c=8;c<43;c++)
if (td_d[c].innerHTML==0) {
   td_d[c].visibility="hidden"; // не показывать ячейку, если она пустая
} else td_d[c].bgColor="white"; // непустые ячейки окрасить белым цветом

Но чё-то как-то не доходит до меня алгоритм всё равно.
  • Вопрос задан
  • 240 просмотров
Решения вопроса 2
alsopub
@alsopub
Попробуйте проще.
У вас есть массив из 31 элемента, вы знаете что месяц начинается с четверга.
Добавьте в начале массива 3 пустых элемента и выводите по простой схеме как будто месяц начинается с понедельника.
Ответ написан
petermzg
@petermzg
Самый лучший программист
var crm = dt.getMonth();
var sdt = new Date(dt.getFullYear(), crm, 1, 9, 1, 1);
var day = sdt.getDay();
if (day != 1) sdt.setDate((day == 0) ? -5 : -(day - 2));
var cl = 0, tr = null, td, nmn,
secoffs = 24 * 60 * 60 * 1000,
vof = sdt.valueOf();
for (var i = 0; i < 42; i++){
   if (!cl){
      tr = pr._crEl('tr');
      pr._addChild(bd, tr);
   }
   var ndt = new Date(vof + (secoffs * i));
   td = pr._crEl('td');
   pr._addChild(tr, td);
   td.innerText = ndt.getDate();
   nmn = ndt.getMonth();
   if (nmn != crm) pr._setAttrs(td, { "class": "wch-cal-ncm", 'data-month': nmn, 'data-year': ndt.getFullYear() });
   if (++cl > 6) cl = 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы