Скрыть ячейки предыдущего и следующего месяца из календаря - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь удалить даты предыдущего и следующего месяца из следующего календаря.

enter image description here

jQuery('.c-day').each(function() {
    let jqThis = jQuery(this);
    let date = jQuery.trim(jqThis.text());
    console.log(date);
});

Приведенный выше код jQuery выбирает все ячейки. Вот что я получаю.

30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10

Однако я могу отфильтровать / удалить 30 с начала и 1 2 3 4 5 6 7 8 9 10 с конца, но это не работает с другими месяцами, такими как ноябрь, декабрь, январь и т. Д. ?

jQuery('.c-day').each(function(i) {
    let jqThis = jQuery(this);
    let date = jQuery.trim(jqThis.text());
    console.log(date);
    if (i == 0 || i > 29) jqThis.hide();
});

Может кто-нибудь помочь мне с логикой здесь?

1 Ответ

0 голосов
/ 28 октября 2019

Вы можете настроить свое заявление if, чтобы получить то, что вы хотите:

jQuery('.c-day').each(function(i) {
    let jqThis = jQuery(this);
    let date = jQuery.trim(jqThis.text());
    console.log(date);
    if (i == 0 || (i > 29 && date < 12)) jqThis.hide();
});

Что это изменение делает (i > 29 && date < 12), использует как index, так и дату, которая у вас уже есть. Если индекс выше 29, это означает, что он, вероятно, со следующего месяца, но мы не можем быть уверены, поскольку в некоторых месяцах 30 дней, а в некоторых 31. Поэтому мы проверяем на date. Если значение ниже 12, это означает, что это из следующего месяца.

Я выбрал 12, так как думаю, что ни один календарь не будет отображать больше 12 дней со следующего месяца, но вы можете изменить его, если я ошибаюсь, значение до 20 или что-то будет работать одинаково хорошо.


Поскольку в декабре много дней по сравнению с предыдущим месяцем, необходима другая логика, которая всегда должна работать:

jQuery('.c-day').each(function(i) {
    let jqThis = jQuery(this);
    let date = jQuery.trim(jqThis.text());
    let dayCounter = 1;
    console.log(date);
    if (date > dayCounter || date < dayCounter){
      jqThis.hide();
    } else {
      dayCounter++;
    }

});

Это работает, зная, что все дни предыдущего месяца будут большечем день 1, и все дни следующего месяца будут меньше, чем последний день месяца. Мы отслеживаем день, в который мы находимся, поэтому дни этого месяца никогда не скрываются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...