Javascript.RU

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

Besprizornik,
вы чего в конце концов хотите? Если наши дни недели, то с чего у вас значение опции воскресенья равно 0?

Сообщение от Besprizornik
в дальнейшем надо будет показать что нельзя высчитать день/дату, для этого и есть пустая опция, которой присвоиться selected
Этого я вообще не понял - зачем вообще болтается в списке пустая опция и что значит нельзя высчитать дату?
Ответить с цитированием
  #12 (permalink)  
Старый 03.03.2019, 15:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Besprizornik
не должен показывать даты после 2400 года, а показывать пустые опции
Ну так причем тут d.getDay(), это уже задача обработчика изменения поля type=number. А для вашего списка с пустой опцией в конце, собственно она не обязательно должна стоять в конце, но если так охота, то как уже говорилось

document.querySelector('#day').options[(d.getDay()||7)-1].selected = true;
Ответить с цитированием
  #13 (permalink)  
Старый 03.03.2019, 16:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Besprizornik
скрипт не должен показывать даты после 2400 года, а показывать пустые опции
Ну даты то тут причем? Это ведь уже пользователь будет щелкать это поле, и эти изменения поля уже должен обрабатывать обработчик, который и должен проверять равен ли год 2400 и если да, то выбрать пустые опции списка. Или вы большой оптимист, планируете прожить почти 400 лет и дождаться таки этой даты? Или пишем как Пушкин, для потомков?

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

<select class="day" id="day">
<option value="1">Понедельник</option>
<option value="2">Вторник</option>
<option value="3">Среда</option>
<option value="4">Четверг</option>
<option value="5">Пятница</option>
<option value="6">Суббота</option>
<option value="0">Воскресенье</option>
<option value=""></option>
<script>
var d = new Date();
document.querySelector('#day').value = d.getDay();
</script>


Для списка месяцев также берем как есть, коли первая его опция будет первый день со значением 0 (буржуйско-javascript формат), а пустая в конце.

Последний раз редактировалось laimas, 04.03.2019 в 02:22.
Ответить с цитированием
  #14 (permalink)  
Старый 04.03.2019, 00:10
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 126

laimas, я просто пытался что-то понять и сделать из первого вврианта второй
<script> 
var d = new Date(); 
document.addEventListener('DOMContentLoaded', function() { 
document.querySelector('#day').options[d.getDay()||7].selected = true;
});
</script>
<select class="day" id="day">
<option value=""></option><option value="1">Понедельник</option><option value="2">Вторник</option><option value="3">Среда</option><option value="4">Четверг</option><option value="5">Пятница</option><option value="6">Суббота</option><option value="0">Воскресенье</option>
</select><br/><br/><br/>
<script> 
var day=new Array('7','1','2','3','4','5','6')
document.addEventListener('DOMContentLoaded', function() { 
document.querySelector('#day_x').options[d.getDay()||7].selected = true;
});
</script>
<select class="day_x" id="day_x">
<option value="0"></option><option value="1">Понедельник</option><option value="2">Вторник</option><option value="3">Среда</option><option value="4">Четверг</option><option value="5">Пятница</option><option value="6">Суббота</option><option value="7">Воскресенье</option>
</select><br/>
Ответить с цитированием
  #15 (permalink)  
Старый 04.03.2019, 00:16
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 126

чтобы получить страничку с такими вот списками
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html><head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
<title>Сегодняшние день недели и дата через элементы формы на JS.</title>
<style>
body { color: #0000a0; font: 14px Georgia, 'Times New Roman', Times, serif; }
h1 { color: #ffffff; font: 16px Georgia, 'Times New Roman', Times, serif; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; -webkit-animation: h-pulsare 1.35s linear infinite; animation: h-pulsare 1.35s linear infinite;}
select { height: 26px; }
input { height: 22px; padding-left: 5px; }
select, input { background: #d7d7ff; color: #0000a0; border: 1px solid #0000a0; font: 16px Georgia, 'Times New Roman', Times, serif; line-height: 0; margin: 5px 3px; }
@-webkit-keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } } @keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } }
</style>
<script> 
var d = new Date(); 
document.addEventListener('DOMContentLoaded', function() { 
document.querySelector('#day').options[d.getDay()||7].selected = true;
document.querySelector('#date').options[d.getDate()].selected = true;
document.querySelector('#month').options[d.getMonth()+1].selected = true;
document.querySelector('#year').value = d.getFullYear();
});
</script>
</head><body>
<h1>Сегодняшние день недели и дата через элементы формы на JS.</h1>
<div class="seg">
Сегодня:<br/>
<select class="day" id="day">
<option value="0"></option><option value="1">Понедельник</option><option value="2">Вторник</option><option value="3">Среда</option><option value="4">Четверг</option><option value="5">Пятница</option><option value="6">Суббота</option><option value="7">Воскресенье</option>

</select><br/>
<select class="date" id="date">
<option value=""></option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> 
<select class="month" id="month">
<option value=""></option><option value="1">января</option><option value="2">февраля</option><option value="3">марта</option><option value="4">апреля</option><option value="5">мая</option><option value="6">июня</option><option value="7">июля</option><option value="8">августа</option><option value="9">сентября</option><option value="10">октября</option><option value="11">ноября</option><option value="12">декабря</option>
</select> 
<input class="year" id="year" type="number" size="4" name="year" min="0" max="2400" step="1" value=""> <i>года</i>.
</div>
</body></html>
Ответить с цитированием
  #16 (permalink)  
Старый 04.03.2019, 02:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Besprizornik
я просто пытался что-то понять и сделать из первого вврианта второй
Ну как бы вы не тасовали свои списки, посредник между ними и объектом Date в виде массива совсем не нужен. Ваши списки содержат на один элемент больше чем соответствующих значений возвращаемых методами объекта Date. И можно управлять списками либо оперируя индексами их опций, либо значениями, слегка корректируя значения от методов.

А что касается функционала, года 2400, пустых опций, то тут скорее непорядок. Ведь хотя опции и пусты содержимым, они тем не менее доступны для выбора в списках. Если бы опции имели к примеру текст "Выберите..." и были выбранными по умолчанию, тогда наличие их в списках было бы логичным, а доступ к ним можно было бы запретить через disabled.

У вас же назначение данных опций определяется иным и это их предназначение никак не вписывается в логику. В такой концепции их либо вообще не должно быть в списках, а добавляться в них они должны по условию, либо эти опции в списках должны быть скрыты, и показываться по условию. И мало того, с появлением этих артистов на сцене должен накладываться запрет на появление других.

Но с другой стороны, если пустые опции появляются на сцене только по мере наступления 2400 года, то не проще ли выбросить эти пустые опции, сделав максимальным значением поля 2399 год? Ведь все элементы ваши получают значения по умолчанию равные элементам текущей даты, а далее выбор, который можно просто ограничить не "по предел", а "до предела".

Последний раз редактировалось laimas, 04.03.2019 в 02:43.
Ответить с цитированием
  #17 (permalink)  
Старый 04.03.2019, 03:15
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 126

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

пустые опции конечно выбираться не будут, а доступ к ним запретить через disabled дело 2ух минут если не меньше, в принципе пустые опции стоят первыми и они будут показываться если убрать атрибут селектед, тоесть надо будет при вводе значения 2400(к примеру) просто удалять атрибут...
Ответить с цитированием
  #18 (permalink)  
Старый 04.03.2019, 03:31
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 126

если есть два одинаковых списка <select id="day"> и <select id="day-2">, то как я понимаю надо document.querySelector('#day', '#day-2').options[d.getDay()||7].selected = true;
Ответить с цитированием
  #19 (permalink)  
Старый 04.03.2019, 03:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Besprizornik
пустые опции конечно выбираться не будут, а доступ к ним запретить через disabled дело 2ух минут если не меньше
А давайте рассмотрим это вне контекста программы, отвлеченно, представив все ситуацией жизненной. Пусть вы режиссер спектакля, в котором также играете одну из ролей, которая определяет акты - первый, второй, третий ...

Для постановки спектакля вы заключили контракты с труппами артистов из различных театров. В каждой такой труппе есть по одному артисту, у которых вообще нет никакой роли, они выходят на сцену только в конце спектакля для поклона. Но при этом вы обязаны по контракту платить им жалование.

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

Сообщение от Besprizornik
как я понимаю надо document.querySelector('#day', '#day-2').options[d.getDay()||7].selected = true;
Нет, метод querySelector() выбирает один элемент по указанному селектору, если указать два, то будет возвращен только первый из них.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить форму которая будет добавлять данные в массив. olelukoie Элементы интерфейса 16 19.12.2018 17:25
Нужно перебрать элементы добавить их в массив и добавить к элементам класс Сергей_FE Оффтопик 8 30.08.2015 17:06
Как добавить данные в глобальный массив из функции Jigan2 jQuery 2 14.03.2015 18:06
добавить массив в объект zloctb Общие вопросы Javascript 3 14.01.2012 14:16
Рекурсивно добавить в массив Nightmare Общие вопросы Javascript 12 15.09.2011 17:07