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

Сообщение от Блондинка
если использовать строчку
document.querySelector('#day_01').options[d.getDay()||7].selected = true;
в hrml надо использовать список опций По порядку с воскресенья По субботу, а если использовать строчку с value то можно опции располагать в любом порядке...
Ну в общем то да, но для вашего списка по индексу таким образом не получится, есть ошибка и d.getDay()-1||7 тоже будет с ошибкой.

a = b || c

означает "присвоить a значение b ИЛИ c", при этом значение b будет присвоено только в случае если булево значение ее равно true (в данном случае не равно 0), иначе будет присвоено значение c. Вы хотите сделать так:

a = b-1 || c

Да, направление логики верное - сдвинуть индексы вверх на одну позицию. Но только такое решение логики также будет выдавать ошибки, и это легко проверить:

<script>
//это календарь буржуев
var d = 'Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота'.split(' '),
//а это наш календарь и ваш список
    s = 'Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье'.split(' '), a = [];    
//здесь итератор i имитирует номер дня возвращаемого функцией getDay()
//и решение, в которое вы облекли свою логику и которое ошибочно 
for(var i=0; i<7; i++) a.push( 
    d[i]+' > '+i 
    +', номер дня после вычитания > '+(i-1)  
    +', индекс для опции > '+(i-1||7) 
    +', выбранный в списке день > '+s[i-1||7]);
    
document.write(a.join('<br>'));
</script>


Так как нужно записать вашу логику для b || c, так чтобы в итоге получить индексы на 1 меньше? И ответ на этот вопрос нужно искать не в JS, а в математике из школьного курса.

По поводу точек с запятой - именно в этом коде, так как он написан, каждое действие на новой строке, их вообще может и не быть, но если код "сжать", то он работать не будет.
Ответить с цитированием