Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2019, 11:26
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

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

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

<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>
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2019, 11:28
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

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

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

Может есть что проще того, что я написал?
Спасибо.
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2019, 12:20
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от miltorg
слишком много кода
Начни с того, что не пиши длинные одинаковые "последовательности"...
Сообщение от miltorg
  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;

А у тебя эта конструкция встречается не раз.
Сам селектор так же можно записать в некую переменную...
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2019, 13:50
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

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

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

А воплощение - 50 строк кода.
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2019, 13:52
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Или я, как всегда, сам того не ведая - написал оптимальный код :-)
Ответить с цитированием
  #6 (permalink)  
Старый 03.12.2019, 14:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от miltorg
Это всё понятно и так.
Тогда почему не реализовано?
Ответить с цитированием
  #7 (permalink)  
Старый 03.12.2019, 14:46
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Потому что мне мой подход кажется в корне не верным.

Зачем вылизывать код который возможно пойдёт в корзину?
Ответить с цитированием
  #8 (permalink)  
Старый 03.12.2019, 15:00
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от miltorg
Зачем вылизывать код который возможно пойдёт в корзину?
Нужно отрабатывать у себя привычку сразу писать более удобный код.
А не переписывать его еще раз, после того как понравится "подход"...
Ответить с цитированием
  #9 (permalink)  
Старый 03.12.2019, 15:03
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Этот код никто не писал - был прототип.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отмена .preventDefault() или возобновление события нажатия на клавишу клавиатуры antserg jQuery 15 13.06.2017 23:14
Отмена события artiom4356 Events/DOM/Window 29 21.10.2015 19:30
Очистка памяти, отмена загрузки картинки, отмена события. zhurchik Общие вопросы Javascript 16 23.10.2014 13:48
отмена повторного выполнения события frant32 Events/DOM/Window 13 06.10.2012 12:25