X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> JavaScript календарь
pomp
pomp
Topic Starter сообщение 5.5.2009, 13:01; Ответить: pomp
Сообщение #1


Вот набросал схематически чего хочу добиться:
[IMG]http://pixelag.net/calendar.gif[/IMG]

Расписую собсна так :rolleyes:
<script language="JavaScript">
<!--
domain = "http://test.com.ua"
// создаю массивчик месяцев
var selectMonth = new Array (1,2,3,4,5,6,7,8,11,12)
// создаю массивчик названий месяцев
var monthName = new Array ("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь")
// создаю массивчик годов начиная с 2005
var selectYear = new Array (2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012)
// получаем текущую дату
var today = new Date
// получаем год
thisYear = today.getYear()
//------------------------//
//выводим месяц
for (i = 0; i < 12; i++) {
document.write("<a href='" + domain + "/" + today.getYear() + "/" + selectMonth[i] + "/'>" + monthName[i] + "</a><br/>")
}
//--
>
</script>


Смысл в чем. Пишу "типа - модуль" к DLE. По сути своей подвязывать к базе и что-то от туда брать не нужно. Поэтому подумал сделать просто JavaScript который будет генерирывать "правельные" ссылки. Из примерара картинки видно что нужны только месяца. Стреловками вправо и влево меняем год, стрелочкой вниз вызываем выпадающий список годов с 2005 и по .... какойто там. Посмотрев DLE и ему подобные движки становиться понятно, что новости, допустим за сентябрь 2005 года можно получить по такой ссылочке - http://domain.com/2005/09/
Сложного ничего вроде нет, но:
Яваскрипт туговато идет что то :rolleyes:, если посмотреть на скрипт, то можно увидеть что массив отображаеться правильно до августа, далее сентябрь идет 11-м месяцом, и ноябрь - 12-м. Интуитивно я догадываюсь почему. Скорее дело в задании начальной даты отсчета? Я прав?
Далее год: Сверху создам динамический селект, под средством которого результат мне нужно подставить в ссылку в месте где "today.getYear()", тут понятно. (today конечно уже не к месту, но то я так. для пробы сунул :)
Нужно еще разбить вю эту байду на 2 столбика. Наверно нужно подсчитать первые 6 месяцев, а потом документ.райт: <br> и сунуть вторые 6 месяцев? Угу? :sarcastic:
Помогите советом, а то я как-то сложно закрутил себе все....:rolleyes:
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
web_programmer
web_programmer
сообщение 5.5.2009, 13:38; Ответить: web_programmer
Сообщение #2


var selectMonth = new Array (1,2,3,4,5,6,7,8,11,12)

Естественно Сентябрь будет 11 месяцем так как в этом массиве он и обозначается ключом 11.
Всего месяцев 12 а у тебя 10 значений в selectMonth.

var selectMonth = new Array (1,2,3,4,5,6,7,8,9,11,10,12)

а цикл делай от 1 до 12
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 5.5.2009, 13:59; Ответить: pomp
Сообщение #3


webprogrammer, :sarcastic: мда, глупая очепятка...

Всеже вопрос открыт: Как подсредством селекта, подставлять значение года в сыслку?
И как разбить 2 колонки? Чисто с технической стороны намек.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 7.5.2009, 1:02; Ответить: pomp
Сообщение #4


Актуально. Нуждаюсь в совете :pionertrava:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 7.5.2009, 1:38; Ответить: Galen
Сообщение #5


Ну вот что-то такое получилось для начала:
<div id='calendar'>
<p>Календарь будет тут</p>
</div>

<script type="text/javascript">
var domain = "http://test.com.ua";
// создаю массивчик месяцев
var selectMonth = new Array (1,2,3,4,5,6,7,8,9,10,11,12);
// создаю массивчик названий месяцев
var monthName = new Array ("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
// получаем текущую дату
var today = new Date();
// получаем год
var curYear = today.getFullYear();
var div = document.getElementById("calendar");

//------------------------//
//выводим месяц
function draw() {
div.innerHTML = ("<h2>" + curYear + "</h2>");
div.innerHTML += ("<a href='#' onclick='b();'><<</a>&nbsp;");
div.innerHTML += ("&nbsp;<a href='#' onclick='f();'>>></a><br>");
for (var i = 0; i < 12; i++)
div.innerHTML += (i % 2) ? ("<a href='" + domain + "/" + curYear + "/" + selectMonth[i] + "/'>" + monthName[i] + "</a><br>") : ("<a href='" + domain + "/" + curYear + "/" + selectMonth[i] + "/'>" + monthName[i] + "</a>&nbsp;");
}
function b() {
curYear--;
draw();
}
function f() {
curYear++;
draw();
}

draw();
</script>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 8.5.2009, 1:33; Ответить: pomp
Сообщение #6


Спасибо огромное, очень помогло :goodpost:
JavaScript подтянуть немешало бы мне....
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 8.5.2009, 14:10; Ответить: pomp
Сообщение #7


Пытаюсь сделать выпадающий список. При событии "ончендж" обновлять переменную curYear, как при клике право-влево.
Не срабатывает :nea:
Где опять ошибка?

<div id='calendar'>
<p>Для просмотра календаря, влючите JavaScript</p>
</div>

<script type="text/javascript">
var domain = "http://test.com.ua";
// создаю массивчик годов
var selectYear = new Array (2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012);
// создаю массивчик месяцев
var selectMonth = new Array (1,2,3,4,5,6,7,8,9,10,11,12);
// создаю массивчик названий месяцев
var monthName = new Array ("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
// получаем текущую дату
var today = new Date();
// получаем год
var curYear = today.getFullYear();
var div = document.getElementById("calendar");


//выводим месяц
function draw() {
div.innerHTML = ("<div id='year'><a href='#' onclick='b();'><<</a>&nbsp;<span class='year'>" + curYear + "</span>&nbsp;<a href='#' onclick='f();'>>></a></div>");
div.innerHTML += ("<select name='sel' size=1 onChange='s();' id='sel'>;");
for (var i = 0; i < 13; i++)
div.innerHTML += ('<option value='+ selectYear[i] +'>'+ selectYear[i]);
div.innerHTML += ("</select>");
for (var i = 0; i < 12; i++)
div.innerHTML += (i % 2) ? ("<a href='" + domain + "/" + curYear + "/" + selectMonth[i] + "/' class='month-l'>" + monthName[i] + "</a><br>") : ("<a href='" + domain + "/" + curYear + "/" + selectMonth[i] + "/' class='month-r'>" + monthName[i] + "</a>&nbsp;");
}
function b() {
curYear--;
draw();
}
function f() {
curYear++;
draw();
}

function s() {
curYear = document.getElementById(’sel’).value;
draw();
}

draw();
</script>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 8.5.2009, 15:49; Ответить: Galen
Сообщение #8


<div id='calendar'>
<p>Для просмотра календаря, влючите JavaScript</p>
</div>

<script type="text/javascript">
var domain = "http://test.com.ua";
// создаю массивчик годов
var selectYear = new Array (2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012);
// создаю массивчик месяцев
var selectMonth = new Array (1,2,3,4,5,6,7,8,9,10,11,12);
// создаю массивчик названий месяцев
var monthName = new Array ("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь");
// получаем текущую дату
var today = new Date();
// получаем год
var curYear = today.getFullYear();
var div = document.getElementById("calendar");


//выводим месяц
function draw() {
div.innerHTML = ("<div id='year'><a href='#' onclick='b();'><<</a>&nbsp;<span class='year'>" + curYear + "</span>&nbsp;<a href='#' onclick='f();'>>></a></div>");

var str = "<select onChange='s();' id='sel'>;";
for (var i = 0; i < 13; i++) {
var sel = (selectYear[i] == curYear) ? "selected='selected'" : "";
str += "<option value=" + selectYear[i] + " " + sel + ">" + selectYear[i] + "</option>";
}
str += "</select><br>";
div.innerHTML += str;
for (var i = 0; i < 12; i++)
div.innerHTML += (i % 2) ? ("<a href='" + domain + "/" + curYear + "/" + selectMonth[i] + "/' class='month-l'>" + monthName[i] + "</a><br>") : ("<a href='" + domain + "/" + curYear + "/" + selectMonth[i] + "/' class='month-r'>" + monthName[i] + "</a>&nbsp;");
}
function b() {
curYear--;
draw();
}
function f() {
curYear++;
draw();
}

function s() {
curYear = document.getElementById("sel").value;
draw();
}

draw();
</script>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pomp
pomp
Topic Starter сообщение 8.5.2009, 17:06; Ответить: pomp
Сообщение #9


Galen, дай я тебя обниму :pardon:, гуру ))))
Спасибо. Не забуду :goodpost:

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1129 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44712 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) 1C-Bitrix, JavaScript\jQuery, Верстка HTML5 CSS3
1 byteeightlab 1452 2.7.2019, 7:37
автор: ychervov
Открытая тема (нет новых ответов) Дополнительный доход по Вашему трафику - JavaScript майнинг
6 GridCash 2666 22.4.2018, 20:30
автор: -GridCash-
Открытая тема (нет новых ответов) JumPic.ru - новый сервис уникальной тизерной и баннерной рекламы без javascript
Рекламный код без javascript - 100% защита от вирусов
3 Shoker 3683 1.4.2018, 18:36
автор: Shoker


 



RSS Текстовая версия Сейчас: 19.3.2024, 12:57
Дизайн