Вход

Просмотр полной версии : отмена события. - Отключить стрелку в календаре на прошлые дни


miltorg
03.12.2019, 11:26
отмена события. - Отключить стрелку в календаре на прошлые дни

Сделал, но как то слишком много кода:



<script>

function levStrelkacalendar0(){
god = document.querySelector('#calendar0 thead td:nth-child(2)').dataset.year;
mes = document.querySelector('#calendar0 thead td:nth-child(2)').dataset.month;
prishla = new Date(god,mes).getTime();

if(prishla > Date.now()) {
document.querySelector('#calendar0 thead tr:nth-child(1) td:nth-child(1)').onclick = function() {

god = document.querySelector('#calendar0 thead td:nth-child(2)').dataset.year;
mes = document.querySelector('#calendar0 thead td:nth-child(2)').dataset.month;
prishla = new Date(god,mes).getTime();
if(prishla > Date.now()) {
Calendar2("calendar0", document.querySelector('#calendar0 thead td:nth-child(2)').dataset.year,
parseFloat(document.querySelector('#calendar0 thead td:nth-child(2)').dataset.month)-1,
'20191229 20191231 20200101 20200102 20191130 20191201 20191202', '20200103 20191203', '20191228 20191129', '20191230');
}else document.querySelector('#calendar0 thead tr:nth-child(1) td:nth-child(1)').onclick = null;

}
}else document.querySelector('#calendar0 thead tr:nth-child(1) td:nth-child(1)').onclick = null;

}


Calendar2("calendar0", new Date().getFullYear(), new Date().getMonth(),
'20191229 20191231 20200101 20200102 20191130 20191201 20191202', '20200103 20191203', '20191228 20191129', '20191230');

document.querySelector('#calendar0 thead tr:nth-child(1) td:nth-child(3)').onclick = function() {
Calendar2("calendar0", document.querySelector('#calendar0 thead td:nth-child(2)').dataset.year,
parseFloat(document.querySelector('#calendar0 thead td:nth-child(2)').dataset.month)+1,
'20191229 20191231 20200101 20200102 20191130 20191201 20191202', '20200103 20191203', '20191228 20191129', '20191230');

levStrelkacalendar0();
}






</script>

miltorg
03.12.2019, 11:28
Для такой, казалось бы простой штуки - отменить работу стрелки при прошедших датах в календаре.

Целиком:
http://dom.onl/u/u8.php

Может есть что проще того, что я написал?
Спасибо.

ksa
03.12.2019, 12:20
слишком много кода
Начни с того, что не пиши длинные одинаковые "последовательности"... ;)

  god = document.querySelector('#calendar0 thead td:nth-child(2)').dataset.year;
  mes = document.querySelector('#calendar0 thead td:nth-child(2)').dataset.month;

Можно заменить, хотя бы, на
var o=document.querySelector('#calendar0 thead td:nth-child(2)').dataset
god = o.year;
mes = o.month;

А у тебя эта конструкция встречается не раз. :(
Сам селектор так же можно записать в некую переменную...

miltorg
03.12.2019, 13:50
Не про то. Это всё понятно и так.
Там должна быть в корне другая идея.
Или воплощение.

Задача в 3 слова - убрать стрелку на прошедшие дни

А воплощение - 50 строк кода.

miltorg
03.12.2019, 13:52
Или я, как всегда, сам того не ведая - написал оптимальный код :-)

ksa
03.12.2019, 14:00
Это всё понятно и так.
Тогда почему не реализовано? :D

miltorg
03.12.2019, 14:46
Потому что мне мой подход кажется в корне не верным.

Зачем вылизывать код который возможно пойдёт в корзину?

ksa
03.12.2019, 15:00
Зачем вылизывать код который возможно пойдёт в корзину?
Нужно отрабатывать у себя привычку сразу писать более удобный код. ;)
А не переписывать его еще раз, после того как понравится "подход"...

miltorg
03.12.2019, 15:03
Этот код никто не писал - был прототип.