Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 26.09.2019, 03:04
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

рони,
как сделать чтобы все ячейки были заполнены, но было только те столбики в которых есть дни текущего месяца? другими словами обрезать столбик если в месяце 5 недель, или 4 тогда обрезать два столбика? возможно так?
Ответить с цитированием
  #22 (permalink)  
Старый 26.09.2019, 09:11
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

рони,
вот смотри
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
    <style>
      body {  }
      .day {
        border: 1px solid #ccc;
        width: 30px;
        line-height: 30px;
        text-align: center;
        margin: 1px;
        background-color: #B0C4DE;
      }
      .month {
          width: 238px;
          height: 238px;
          margin: ;
          border: 1px solid #ccc;
      }
      .month tr:nth-child(n + 7) td.day{
         background-color:  #FF85C6;
      }
      .month tr:nth-child(1) th{
         text-align: center;
      }
    </style>
    </head>
    <body>
    <table class="month"></table>
    <script>
      var calendar = {
        update: function(year, month) {
          this.year = year;
                                    this.month = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'][month];
          var stepDay = new Date(year, month, 1);
          stepDay.setDate(stepDay.getDate() - ((stepDay.getDay()||7) - 1));
          var lastDay = new Date(stepDay);
          lastDay.setDate(lastDay.getDate() + 41);
          while (stepDay <= lastDay) {
            this.days.push(stepDay.getDate());
            stepDay.setHours(24);
          }
        },
        render: function() {
          var html = ['<tr>','<tr>','<tr>','<tr>','<tr>','<tr>','<tr>'];
          for (var i = 0; i < this.days.length; i++) {
            html[i % 7] += '<td class="day">' + this.days[i] ;
          }
          var title = '<tr><th colspan=7>' + this.month + ', ' + this.year;
          this.element.innerHTML = title + html.join('');
        }
      };
      var today = new Date(2019, 9),

        thisYear = today.getFullYear(),
        thisMonth = today.getMonth();
      calendar.days = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
      calendar.element = document.querySelector('.month');
      calendar.update(thisYear, thisMonth);
      calendar.render();
    </script>
</body>
</html>

в следующем месяце пять недель, последний столбик лишний, как его обрезать?
Ответить с цитированием
  #23 (permalink)  
Старый 26.09.2019, 10:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

календарь вывод дней месяца
m~r.Nemo,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
    <style>
      body { display: flex; flex-wrap: wrap; justify-content: space-between;}
      .day {
        border: 1px solid #ccc;
        width: 30px;
        line-height: 30px;
        text-align: center;
        margin: 1px;
        background-color: #B0C4DE;
      }
      .month {
          height: 220px;
          margin: 5px;
          border: 1px solid #ccc;
          border-radius: 4px;

      }
      .month tr:nth-child(n + 7) td.day{
         background-color:  #FF85C6;
      }
      .month tr:nth-child(1) th{
         text-align: center;
      }
    </style>
    </head>
    <body>
    <script>
      var calendar = {
        update: function(year, month) {
          this.year = year;
          this.month = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'][month];
          var startDay = new Date(year, month, 1);
          var offsetDay = (startDay.getDay()||7) - 1;
          startDay.setDate(startDay.getDate() - offsetDay);
          var lastDay = new Date(startDay);
          var days = (new Date(year, month + 1, 0)).getDate();
          days = Math.ceil((days + offsetDay)/ 7) * 7;
          lastDay.setDate(lastDay.getDate() + days);
          this.data = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
          while (startDay < lastDay) {
            this.data.push(startDay.getDate());
            startDay.setHours(24);
          }
        },
        render: function() {
          var html = ['<tr>','<tr>','<tr>','<tr>','<tr>','<tr>','<tr>'];
          for (var i = 0; i < this.data.length; i++) {
            html[i % 7] += '<td class="day">' + this.data[i] ;
          }
          var title = '<tr><th colspan=7>' + this.month + ', ' + this.year;
          this.element.innerHTML = title + html.join('');
        }
      };
      var thisYear = 2019;

      for (var i = 0; i < 12; i++) {
          var table = document.createElement('table');
          table.className = 'month';
          calendar.element = table;
          calendar.update(thisYear, i);
          calendar.render();
          document.body.appendChild(table)
      }

    </script>
</body>
</html>

Последний раз редактировалось рони, 26.09.2019 в 10:40.
Ответить с цитированием
  #24 (permalink)  
Старый 26.09.2019, 11:18
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

рони,
а зачем календарь на год? надо только текущий месяц...
Ответить с цитированием
  #25 (permalink)  
Старый 26.09.2019, 13:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от m~r.Nemo
а зачем календарь на год? надо только текущий месяц...
так выводите только месяц!!!

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
    <style>
      body { display: flex; flex-wrap: wrap; justify-content: space-between;}
      .day {
        border: 1px solid #ccc;
        width: 30px;
        line-height: 30px;
        text-align: center;
        margin: 1px;
        background-color: #B0C4DE;
      }
      .month {
          height: 220px;
          margin: 5px;
          border: 1px solid #ccc;
          border-radius: 4px;

      }
      .month tr:nth-child(n + 7) td.day{
         background-color:  #FF85C6;
      }
      .month tr:nth-child(1) th{
         text-align: center;
      }
    </style>
    </head>
    <body>
    <table class="month"></table>
    <script>
      var calendar = {
        update: function(year, month) {
          this.year = year;
          this.month = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'][month];
          var startDay = new Date(year, month, 1);
          var offsetDay = (startDay.getDay()||7) - 1;
          startDay.setDate(startDay.getDate() - offsetDay);
          var lastDay = new Date(startDay);
          var days = (new Date(year, month + 1, 0)).getDate();
          days = Math.ceil((days + offsetDay)/ 7) * 7;
          lastDay.setDate(lastDay.getDate() + days);
          this.data = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
          while (startDay < lastDay) {
            this.data.push(startDay.getDate());
            startDay.setHours(24);
          }
        },
        render: function() {
          var html = ['<tr>','<tr>','<tr>','<tr>','<tr>','<tr>','<tr>'];
          for (var i = 0; i < this.data.length; i++) {
            html[i % 7] += '<td class="day">' + this.data[i] ;
          }
          var title = '<tr><th colspan=7>' + this.month + ', ' + this.year;
          this.element.innerHTML = title + html.join('');
        }
      };
      var year = 2019, month = 9;
      calendar.element = document.querySelector('.month');
      calendar.update(year, month);
      calendar.render();
    </script>
</body>
</html>
Ответить с цитированием
  #26 (permalink)  
Старый 26.09.2019, 14:14
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

рони,
кажется получилось, вывести на текущий месяц
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
    <style>
      body { display: flex; flex-wrap: wrap; justify-content: space-between;}
      .day {
        border: 1px solid #ccc;
        width: 30px;
        line-height: 30px;
        text-align: center;
        margin: 1px;
        background-color: #B0C4DE;
      }
      .month {
          height: 220px;
          margin: 5px;
          border: 1px solid #ccc;
          border-radius: 4px;
      }
      .month tr:nth-child(n + 7) td.day{
         background-color:  #FF85C6;
      }
      .month tr:nth-child(1) th{
         text-align: center;
      }
    </style>
    </head>
    <body>
    <table class="month"></table>
    <script>
      var calendar = {
        update: function(year, month) {
          this.year = year;
          this.month = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'][month];
          var startDay = new Date(year, month, 1);
          var offsetDay = (startDay.getDay()||7) - 1;
          startDay.setDate(startDay.getDate() - offsetDay);
          var lastDay = new Date(startDay);
          var days = (new Date(year, month + 1, 0)).getDate();
          days = Math.ceil((days + offsetDay)/ 7) * 7;
          lastDay.setDate(lastDay.getDate() + days);
          this.data = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
          while (startDay < lastDay) {
            this.data.push(startDay.getDate());
            startDay.setHours(24);
          }
        },
        render: function() {
          var html = ['<tr>','<tr>','<tr>','<tr>','<tr>','<tr>','<tr>'];
          for (var i = 0; i < this.data.length; i++) {
            html[i % 7] += '<td class="day">' + this.data[i] ;
          }
          var title = '<tr><th colspan=7>' + this.month + ', ' + this.year;
          this.element.innerHTML = title + html.join('');
        }
      };
    var today = new Date(),

        thisYear = today.getFullYear(),
        thisMonth = today.getMonth();
      calendar.days = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
      calendar.element = document.querySelector('.month');
      calendar.update(thisYear, thisMonth);
      calendar.render();
    </script>
</body>
</html>
Ответить с цитированием
  #27 (permalink)  
Старый 26.09.2019, 14:15
Аватар для m~r.Nemo
Аспирант
Отправить личное сообщение для m~r.Nemo Посмотреть профиль Найти все сообщения от m~r.Nemo
 
Регистрация: 27.10.2012
Сообщений: 80

Тему можно закрыть...
Ответить с цитированием
  #28 (permalink)  
Старый 26.09.2019, 14:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от m~r.Nemo
кажется получилось, вывести на текущий месяц
ура!!!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает скрипт? razorg1991 Элементы интерфейса 6 26.09.2013 15:30
Имеется скрипт калькулятора - не пойму почему не работает tishkovav AJAX и COMET 4 15.02.2012 15:21
Не работает скрипт в дальней директории Raonde Общие вопросы Javascript 3 30.01.2012 09:15
Не работает скрипт :( VladimirV Javascript под браузер 5 21.12.2010 14:26
Почему не работает скрипт? milvic Общие вопросы Javascript 3 03.03.2008 14:12