Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывод дат в таблицу (https://javascript.ru/forum/dom-window/34496-vyvod-dat-v-tablicu.html)

Dimas95 07.01.2013 19:01

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

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

07.01.13 Masha
08.01.13 Petya
09.01.13 Katya
10.01.13 Vasya
11.01.13 Alena
12.01.13 Kolya
13.01.13 Serega
14.01.13 Oleg
15.01.13 Lada
16.01.13 Nikita
17.01.13 Anya
18.01.13 Daniil
19.01.13 Dmitriy
20.01.13 Alexey

Так должно быть по истечению этих двух недель:

21.01.13
22.01.13
23.01.13
24.01.13
25.01.13
26.01.13
27.01.13
28.01.13
29.01.13
30.01.13
31.01.13
01.02.13
02.02.13
03.02.13

И по истечению этих двух, следующие две и так далее...

Deff 07.01.2013 19:06

Сделайте в топике пару(или скок там) колонок с реальными датами, дабы по сто раз не пояснять

Deff 07.01.2013 19:20

Эээ тут лучше ссылку, http://dkstudio.net/work/john/
И пару столбиков с текстом(не HTML) реальных дат, посколь непонятен алгоритм

Dimas95 07.01.2013 19:21

Цитата:

Сообщение от Deff (Сообщение 225838)
Сделайте в топике пару(или скок там) колонок с реальными датами, дабы по сто раз не пояснять

Спасибо за совет, прикрутил

Deff 07.01.2013 19:21

Цитата:

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

Приведите и второй вариант с измененными датами

Dimas95 07.01.2013 19:28

Добавил. Так наверное будет наглядно

Deff 07.01.2013 20:51

сейчас покурочу

Deff 07.01.2013 22:57

Не увидел в таблице http://dkstudio.net/work/john/ данных вышеприведённого формата,
поэтому думайте сами из какой колонки их брать (см переменную N в скрипте)
Подразумевается что дата формата 07.01.13 расположена в одной колонке

$(document).ready(function(){
var Delta=1000*60*60*24*14 //Добавляемое Кол-во миллисекунд
function dateExchang(d,Delta) {
a=a.replace(/\./g,' ').replace(/\s(\d\d)\s*$/,' 20$1')
a=a.replace(/^(.{3})(.{3})/,'$2$1')
var d = new Date();
d.setTime(Date.parse(a)+Delta);
d=d.split(/\s+/)
return d;
}
var N=1; //Номер колонки(1- это вторая, первая - 0) откуда берем - заменяем и впихиваем
$("div.entry-content>table tr").each(function(){
  var a=$(this).find('td').eq(N);
  a.text(dateExchang(a.text(),Delta));
});
});

Dimas95 08.01.2013 03:11

Спасибо за скрипт, очень благодарен. Но я не совсем понимаю как его применить. Я обновил таблицу на сайте (первая таблица), и проставил в ней даты через HTML вручную. А не подскажете ли как сделать что бы даты проставлялись автоматически скриптом? Насколько я понимаю, нужно поесить событие onLoad на каждую строку таблицы, но что делать после этого? Тоесть могли бы вы применить этот скрипт к приведенной таблице?
Вот код таблицы


<tbody>
<tr>
<td><strong>Date</strong></td>
</tr>
<tr>
<td><strong>07.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>08.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>09.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>10.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>11.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>12.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>13.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>14.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>15.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>16..01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>17.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>18.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>19.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>20.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
</tbody>
</table>



Спасибо заранее

Deff 08.01.2013 04:47

Dimas95, См спойлер!
<script src="http://code.jquery.com/jquery-latest.js"></script>


<div class="entry-content">
<table>
<tbody>
<tr>
<td><strong>Date</strong></td>
</tr>
<tr>
<td><strong>07.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>08.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>09.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>10.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>11.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>12.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>13.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong><strong>14.01.13</strong></strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>15.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>16.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>17.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>18.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>19.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
<tr>
<td><strong>20.01.13</strong></td>
<td><strong><strong>Name</strong></strong></td>
</tr>
</tbody>
</table>
</div>

<script type="text/javascript">
$(document).ready(function(){ 
var Delta=1000*60*60*24*14 //Добавляемое Кол-во миллисекунд
function dateExchang(a,Delta) {
a=a.replace(/\./g,' ').replace(/\s(\d\d)\s*$/,' 20$1');
a=a.replace(/^(.{3})(.{3})/,'$2$1');
var d = new Date();d.setTime(Date.parse(a)+Delta);
var month=("0"+(d.getMonth()+1)).replace(/(\d\d$)/,'$1');d=d.toString().split(/\s+/);
d=d[2]+"."+month+"."+d[3];
return d;
}

var N=0; //Номер колонки(1- это вторая, первая - 0) откуда берем - заменяем и впихиваем
$("div.entry-content>table tr").each(function(){

  var a=$(this).find('td').eq(N).find('strong:last');
  var b=a.text();
   if(b.split(".").length==3){a.text(dateExchang(b,Delta))}

});
});
</script>

Cкрипт пока тупо добавляет 14 дней к сушествующим в таблице//Обновление дат по окончании cрока- пока не делал
(В вообще какой в данном деянии заложен аргумент ? - Для чего этот финт ?

Dimas95 09.01.2013 06:39

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

Давайте я немного поясню для чего это делается, и наверное намного легче будет понять суть и найти простое решение. Есть таблица, в которую работники будут вносить данные, кто когда работает. Тоесть как я приводил пример:

07.01.13 Masha
08.01.13 Petya
09.01.13 Katya

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

И еще вопрос, будут ли выводится даты для двух недель, а потом меняться сразу для следющих недель, или ежедневно будет добавлятся новая дата и удаляться предыдущая?

Спасибо огромное за помощь

Deff 09.01.2013 13:27

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

Dimas95 09.01.2013 15:34

Спасибо.
А не знаете ли как это реализовать на стороне сервера? Или возможно ли каким то образом Javascript -ом цеплять дату с сервера, и на ее основе добавлять последующие даты?

И в случае если я буду использовать только предоставленный Вами скрипт, он будет полность и автономно работать?

Спасибо

Deff 09.01.2013 15:39

Цитата:

Сообщение от Dimas95
А не знаете ли как это реализовать на стороне сервера?

Нет(но знаю, что это типичное действо для PHP) - подождите до вечера,
если не ответят - возможно стоит запостить в топике http://javascript.ru/forum/server/

Dimas95 09.01.2013 16:02

Ок, спсибо большое, немножко позже еще в ту ветку напишу.

И все таки, тот скрипт он полностью рабочий и будет обновляться каждые две недели, опираясь на дату компьютера?

Спасибо за помощь

Deff 09.01.2013 16:18

Цитата:

Сообщение от Dimas95
И все таки, тот скрипт он полностью рабочий и будет обновляться каждые две недели, опираясь на дату компьютера?

Он опирается не на текущую дату, а на дату в таблице;
И заменяеи на две недели вперед от текущей табличной даты

Dimas95 09.01.2013 17:32

Я сейчас протестировал, и понял что скрипт проблему то и не решает. Или возможно я то то не правильно делаю.
Я ввел единственную дату в таблицу, 07.01.13, а в остальных ячейках удалил даты, в надежде что скрипт сам подставит последующие даты. Но он прибавил две недели только к первому значению, и вывел уже измененную дату вместо 07.01.13, а в остальные ячейки ничего не выдал. Просто получается что все равно приходится вручную прописывать даты, что бы скрипт их уже обрабатывал.
А возможно ли сделать так, что бы прописать одну дату, в первой ячейке, и скрипт будет отталкиваться от нее, и вставлять уже измененные значение в слудующие ячейки?


Часовой пояс GMT +3, время: 07:16.