Javascript.RU

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

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

Вы блондинка и это значение вашего свойства "цвет волос", по аналогии со свойством 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), то такой проблемы как выше не возникает, более того, опции (дни недели) в списке могут иметь какой угодно порядок, так как индекс здесь не важен.
Ответить с цитированием
  #42 (permalink)  
Старый 26.07.2019, 09:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Русский
стоит издеваться над убогими и давать им надежду
Чего не стоит делать, так это не опускать свое достоинство ниже плинтуса, считая себя избранным, а остальных ущербными.
Ответить с цитированием
  #43 (permalink)  
Старый 26.07.2019, 10:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Русский
потакать таким в своей убеждённости
Вас кто-то заставляет? Проходите мимо, если вы такой крутой дока, а что касается остальных, так это как они хотят, и в ваших советах как поступать я думаю никто из них не нуждается.
Ответить с цитированием
  #44 (permalink)  
Старый 26.07.2019, 11:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Русский
надо обязательно указать, какие вокруг все мудаки
Не видно, чтобы вас кто-то так называл, а вот с вашей стороны явное оскорбление наблюдается, где вы называете ошибку как "генетическую". Даже если вас кто-то и игнорирует, это не дает вам право унижать и оскорблять его. В частности автора данной темы.
Ответить с цитированием
  #45 (permalink)  
Старый 26.07.2019, 21:10
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

laimas,
одним словом если использовать строчку
document.querySelector('#day_01').options[d.getDay()||7].selected = true;

в hrml надо использовать список опций По порядку с воскресенья По субботу, а если использовать строчку с value то можно опции располагать в любом порядке, главное чтобы валуе соответствовало воскресенье = 0 понедельник =1 и т.д.
Ответить с цитированием
  #46 (permalink)  
Старый 26.07.2019, 21:13
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

P. S. мне кажется что лучше просто не реагировать на посты русских
Ответить с цитированием
  #47 (permalink)  
Старый 26.07.2019, 21:40
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

Русский,
да не волнуйся ты так, к окончанию школы может быть и выучишь english...
Ответить с цитированием
  #48 (permalink)  
Старый 26.07.2019, 21:57
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

...
Ответить с цитированием
  #49 (permalink)  
Старый 26.07.2019, 23:39
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

а такой вопрос

document.addEventListener('DOMContentLoaded', function() {
    var d = new Date(),
        days = "Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота".split(" ");
    
    document.querySelector('#day').textContent = days[d.getDay()];
    document.querySelector('#day_01').options[d.getDay()||7].selected = true;
    document.querySelector('#day_02').value = d.getDay()
    document.querySelector('#date').options[d.getDate()-1].selected = true;
    document.querySelector('#date_01').value = d.getDate();
    document.querySelector('#month').options[d.getMonth()].selected = true;
    document.querySelector('#year').value = d.getFullYear();
});


почему в строке
document.querySelector('#day_02').value = d.getDay()
не надо точка с запятой, а в строке
document.querySelector('#date_01').value = d.getDate();
надо? и как правильно с месяцем
document.querySelector('#month_01').value = d.getMonth()
с точкой с запятой или без?
Ответить с цитированием
  #50 (permalink)  
Старый 27.07.2019, 00:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Блондинка
если использовать строчку
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, а в математике из школьного курса.

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать калькулятор и с чего начать? A.P. Yellowman Общие вопросы Javascript 3 15.11.2013 21:32
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Вопрос как сделать эту панельку Определённых размеров и свойств. jei jQuery 3 09.06.2009 19:14