Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.04.2015, 13:37
Интересующийся
Отправить личное сообщение для |Alexxx|# Посмотреть профиль Найти все сообщения от |Alexxx|#
 
Регистрация: 10.04.2015
Сообщений: 12

theKingOfJava,
Да, что-то похожее на это. Не думал, что так просто это можно сделать.
Спасибо за ответ.
Ответить с цитированием
  #12 (permalink)  
Старый 13.04.2015, 16:02
Интересующийся
Отправить личное сообщение для |Alexxx|# Посмотреть профиль Найти все сообщения от |Alexxx|#
 
Регистрация: 10.04.2015
Сообщений: 12

Yuliya1121,
Все будем миллионерами.
Ответить с цитированием
  #13 (permalink)  
Старый 13.04.2015, 17:17
Интересующийся
Отправить личное сообщение для |Alexxx|# Посмотреть профиль Найти все сообщения от |Alexxx|#
 
Регистрация: 10.04.2015
Сообщений: 12

theKingOfJava,
Вопрос: можно на html страничке выпадающий список максимально сократить (убрать option), задав в javascript массив элементов списка и "привязав" его к select?

К примеру, создать скрипт, где все option будут объявлены в одной новой переменной?
Ответить с цитированием
  #14 (permalink)  
Старый 13.04.2015, 18:37
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от theKingOfJava
 
Регистрация: 31.03.2015
Сообщений: 113

<html>
<head>
</head>
<body>
 
<select id="s"></select>
 
<script>

opts=[1,2,3,5]
opts.forEach(function(x){s.appendChild(new Option(x))})

</script>
</body>
 
</html>
Ответить с цитированием
  #15 (permalink)  
Старый 13.04.2015, 18:42
Интересующийся
Отправить личное сообщение для |Alexxx|# Посмотреть профиль Найти все сообщения от |Alexxx|#
 
Регистрация: 10.04.2015
Сообщений: 12

Огромное спасибо)
Ответить с цитированием
  #16 (permalink)  
Старый 14.04.2015, 19:27
Интересующийся
Отправить личное сообщение для |Alexxx|# Посмотреть профиль Найти все сообщения от |Alexxx|#
 
Регистрация: 10.04.2015
Сообщений: 12

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

Можно ли в последнюю колонку "Period" вывести, скажем, значок решетки, при нажатии на которую появится всплывающее окошко (alert), где будет указано количество дней, оставшихся до окончания регистрации выбранного пользователя. Другими словами, от значения Expiration будет отниматься Registration, и на выходе мы получим определенное количество дней.

Просто объявить переменные и отнимать от одной другую - глупая идея, и ничего здесь не выйдет (может я ошибаюсь, но вряд ли). Мне кажется, с этим кодом это сделать не выйдет, т.к. яваскрипт вряд ли вобще понимает, что в наших ячейках есть даты..

<html>
<head>
</head>
<body>
  
<p><table id="t" width="1250" cellspacing="1" cellpadding="2" style="border: 1px solid black">
<tr>
<td>ID</td>
<td>Full Name</td>
<td>Reading Hall</td>
<td>Registration</td>
<td>Expiration Date</td>
<td>Period</td>
</tr>
</table></p>

<fieldset>
<legend>New Reader</legend> <label>Reader`s ID</label> <input id="ID"/> <button id="genID">generate id</button>
<p><label>Full Name</label> <input id="fullName" /></p>
<label>Reading Hall</label> <select id="RH">
<option>Financial</option>
<option>Computers/IT</option>
<option>Science Fiction</option>
<option selected>--Select reading hall--</option>
</select>

<p><label>Registration date</label> <input id="D"/> <select id="M"></select> <select id="Y"></select> </p>
<p><label>Expiration date</label> <input id="D2"/> <select id="M2"></select> <select id="Y2"></select> </p>
<p> <button id="AddReader">Add reader to table</button></p>
</fieldset>

<script>

genID.onclick=function(){
ID.value=Math.floor(Math.random()*20)
}
  
AddReader.onclick=function(){
 var row=t.insertRow()
 row.insertCell().innerHTML=ID.value
 row.insertCell().innerHTML=fullName.value
 row.insertCell().innerHTML=RH.value
 row.insertCell().innerHTML=D.value+" "+M.value+" "+Y.value
 row.insertCell().innerHTML=D2.value+" "+M2.value+" "+Y2.value

}

opts1=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
opts1.forEach(function(x){M.appendChild(new Option(x))})

opts2=["2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025"]
opts2.forEach(function(z){Y.appendChild(new Option(z))})

opts1_2=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
opts1_2.forEach(function(x){M2.appendChild(new Option(x))})

opts2_2=["2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025"]
opts2_2.forEach(function(k){Y2.appendChild(new Option(k))})

</script>

</body>

</html>
Ответить с цитированием
  #17 (permalink)  
Старый 14.04.2015, 20:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сервер хранит регистрацию, так что ему трудно выдать готовое - количество дней ее окончания? И это можно получить уже sql-запросом.
А уж как показать, сразу ли, или в окошечке, это как нравится. Зачем возлагать на клиента задачи, которые не имеют смысла?
Ответить с цитированием
  #18 (permalink)  
Старый 14.04.2015, 21:49
Интересующийся
Отправить личное сообщение для |Alexxx|# Посмотреть профиль Найти все сообщения от |Alexxx|#
 
Регистрация: 10.04.2015
Сообщений: 12

Это задачка скорее для общего развития, не более. На практике этот код вряд ли будет где-то использоваться.
Изучаю html, js, css несколько недель, следовательно, знаний не очень много.

Было бы очень интересно посмотреть, как приведенную выше задумку можно реализовать.
Буду благодарен за любые советы/ответы.

Последний раз редактировалось |Alexxx|#, 14.04.2015 в 23:39.
Ответить с цитированием
  #19 (permalink)  
Старый 15.04.2015, 03:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Понятно. Ну так решать задачи нужно привязанные к реалиям, а не нечто пространное. Сервер будет хранить дату регистрации как DATETIME. Окончании регистрации при этом хранить не нужно серверу, ему необходимо в таком случае хранить установленный период в днях. По этим двум параметрам можно получить и дату окончания, и проверить скоро ли она наступит, и отправить письмо пользователю за день до ее окончания. Для этого и SQL, и серверный язык имеют набор функций для работы с датой/временем.

JS не исключение, в нем тоже есть инструментарий для подобных операций - объект Date. В реальности сервер вернул бы дату регистрации и ее период определенный конфигураций, а никак не набор месяцев и годов как у вас представлено. Посредством объекта Date и нужно производить расчет на клиенте.

Но данные типа дата/время, это особый тип, который еще связан и с пространством даже а рамках шарика нашего. Сайт будет работать по времени сервера для всех пользователей, включая и тех кто западнее его, и кто восточнее. Если клиенту передать время регистрации, которое соответствует времени сервера, то расчеты на клиенте будут верны только для тех пользователей, у которых часовой пояс равен поясу определенному для сервера. А для клиентов со смещением от него будет ошибка, и чем далее смещение, тем грубее ошибка, в смысле рассчитанного периода.

Чтобы этой ошибки не возникало, клиент должен производить расчеты по времени клиента, а сервер для этого должен отдавать клиенту не локальное время регистрации, а ее UTC представление. Есть еще один способ, это передача клиенту времени регистрации по локальному времени сервера и смещение временной зоны сервера (от GMT). У сервера смещение к западу будет отрицательными, а к востоку положительными, на клиенте наоборот - к востоку отрицательные, к западу положительные. Разница смещения сервера и клиента позволит получить на клиенте как локальное время, так и отображать время и сервера.

Вот такие задачи решать, и не с абстрактными цифрами напоминающими год, а с временными метками и посредством объекта Date, это была бы польза. А набор цифр и названий месяцев, было бы уместно для задачи "Календарь", хотя и для него нужны были бы только названия месяцев, для локализации.
Ответить с цитированием
  #20 (permalink)  
Старый 15.04.2015, 17:59
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от theKingOfJava
 
Регистрация: 31.03.2015
Сообщений: 113

<html>
<head>
</head>
<body>
   
<p><table id="t" width="1250" cellspacing="1" cellpadding="2" style="border: 1px solid black">
<tr>
<td>ID</td>
<td>Full Name</td>
<td>Reading Hall</td>
<td>Registration</td>
<td>Expiration Date</td>
<td>Period</td>
</tr>
</table></p>
 
<fieldset>
<legend>New Reader</legend> <label>Reader`s ID</label> <input id="ID"/> <button id="genID">generate id</button>
<p><label>Full Name</label> <input id="fullName" /></p>
<label>Reading Hall</label> <select id="RH">
<option>Financial</option>
<option>Computers/IT</option>
<option>Science Fiction</option>
<option selected>--Select reading hall--</option>
</select>
 
<p><label>Registration date</label> <input id="D"/> <select id="M"></select> <select id="Y"></select> </p>
<p><label>Expiration date</label> <input id="D2"/> <select id="M2"></select> <select id="Y2"></select> </p>
<p> <button id="AddReader">Add reader to table</button></p>
</fieldset>
 
<script>
 
genID.onclick=function(){
ID.value=Math.floor(Math.random()*20)
}
AddReader.onclick=function(){
 var row=t.insertRow()
 row.insertCell().innerHTML=ID.value
 row.insertCell().innerHTML=fullName.value
 row.insertCell().innerHTML=RH.value
 var r_date=D.value, r_month=M.value, r_year=Y.value, e_date=D2.value, e_month=M2.value, e_year=Y2.value
 row.insertCell().innerHTML=r_date+" "+r_month+" "+r_year
 row.insertCell().innerHTML=e_date+" "+e_month+" "+e_year
 var per=row.insertCell()
 per.innerHTML="#"
 var regDate=new Date(r_year, opts1.indexOf(r_month), r_date).getTime(),
     expDate=new Date(e_year, opts1.indexOf(e_month), e_date).getTime(),
     theTime=(expDate-regDate)/86400000
 per.onclick=function(){alert(theTime)}
}
 
opts1=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
opts1.forEach(function(x){M.appendChild(new Option(x))})
 
opts2=["2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025"]
opts2.forEach(function(z){Y.appendChild(new Option(z))})
 
opts1_2=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
opts1_2.forEach(function(x){M2.appendChild(new Option(x))})
 
opts2_2=["2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025"]
opts2_2.forEach(function(k){Y2.appendChild(new Option(k))})

 
</script>
 
</body>
 
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическая таблица voyager1 jQuery 1 03.11.2013 17:06
Почему динамическая таблица создается без контента?.. deivan Firefox/Mozilla 3 15.08.2012 14:28
Динамическая таблица magicpro Элементы интерфейса 3 15.08.2011 09:47
Динамическая таблица результатов Anutik_pk Я не знаю javascript 0 29.05.2009 01:02
Изменение цвета ячейки (динамическая таблица) не по событию ImSWORDMASTER Элементы интерфейса 3 12.03.2009 21:21