Показать сообщение отдельно
  #42 (permalink)  
Старый 26.07.2019, 06:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Блондинка
вот так показывает пятницу
Но вот с воскресеньем будут проблемы. Значит нет понятия как все работает. Что же вы в трех столбах то заблудились.

Вы блондинка и это значение вашего свойства "цвет волос", по аналогии со свойством value опций списка.

Вы стоите в очереди в магазине, а перед вами стоит дама у которой свойство "цвет волос" равно "брюнетка". Здесь вам не сложно понять, что дама в очереди имеет номер 1, а вы номер 2? Думаю, что не сложно. А также очевидно, что когда брюнетка отоварится и уйдет, то ваш номер в очереди станет равным 1, но при этом вы не станете брюнеткой и, думаю, тоже понятно.

Также и опции списка, как впрочем и любая коллекция элементов, имеют такую нумерацию, которая называется индексацией, но в отличии от очереди в магазине она начинает не с 1, а с 0.

Неделя у "буржуев", в отличии от нас пролетариев, начинается с воскресенья, то есть этот день в коллекции дней недели будет иметь номер/индекс равный 0. А последний день недели это суббота, с индексом 6.

В этом выражении .options[d.getDay()||7].selected = true; сказано:

взять опцию списка с индексом, который определяется индексом текущего дня недели и выбрать эту опцию. Свойство value выбранной опции будет определять значение списка (программный выбор). Выражение d.getDay()||7 будет работать по следующей логике: если день недели не воскресенье (getDay() возвращает не 0, а все что не 0, это true), то индекс выбираемой опции будет в пределах от 1 до 6, а если воскресенье (getDay() возвращает 0, false), то будет определен индекс равный 7.

И это бы работало, если бы ваш список имел еще одну опцию перед понедельником, то есть 8 опций с индексами соответственно от 0 до 7. А у вас всего 7 опций с индексами от 0 до 6. Уменьшив на 1 возвращаемое функций getDay() значение, вы решаете проблему для понедельника по субботу включительно, а вот опции воскресенья с индексом 7 в вашем писке нет. Что нужно сделать?

А вот выражение document.querySelector('#day_02').value = d.getDay() устанавливает значение списка, выбирает опцию его не по по его индексу, а по его свойству value. Если эти свойства будут иметь такие же значения как и значения возвращаемые функций getDay() (от 0 до 6), то такой проблемы как выше не возникает, более того, опции (дни недели) в списке могут иметь какой угодно порядок, так как индекс здесь не важен.
Ответить с цитированием