Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение нужной ячейки при нажатии 
:(
    Опции темы
DiMoN_TD
Дата 9.1.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 16.12.2007

Репутация: нет
Всего: нет



Всем привет!
Я взял за основу календарь по этой ссылке http://www.softtime.ru/scripts/calendar.php
    
Код

 <?php 
  // Вычисляем число дней в текущем месяце 
  $dayofmonth = date('t'); 
  // Счётчик для дней месяца 
  $day_count = 1; 

  // 1. Первая неделя 
  $num = 0; 
  for($i = 0; $i < 7; $i++) 
  { 
    // Вычисляем номер дня недели для числа 
    $dayofweek = date('w', 
                      mktime(0, 0, 0, date('m'), $day_count, date('Y'))); 
    // Приводим к числа к формату 1 - понедельник, ..., 6 - суббота 
    $dayofweek = $dayofweek - 1; 
    if($dayofweek == -1) $dayofweek = 6; 

    if($dayofweek == $i) 
    { 
      // Если дни недели совпадают, 
      // заполняем массив $week 
      // числами месяца 
      $week[$num][$i] = $day_count; 
      $day_count++; 
    } 
    else 
    { 
      $week[$num][$i] = ""; 
    } 
  } 

  // 2. Последующие недели месяца 
  while(true) 
  { 
    $num++; 
    for($i = 0; $i < 7; $i++) 
    { 
      $week[$num][$i] = $day_count; 
      $day_count++; 
      // Если достигли конца месяца - выходим 
      // из цикла 
      if($day_count > $dayofmonth) break; 
    } 
    // Если достигли конца месяца - выходим 
    // из цикла 
    if($day_count > $dayofmonth) break; 
  } 

  // 3. Выводим содержимое массива $week 
  // в виде календаря 
  // Выводим таблицу 
  echo "<table border=1>"; 
  for($i = 0; $i < count($week); $i++) 
  { 
    echo "<tr>"; 
    for($j = 0; $j < 7; $j++) 
    { 
      if(!empty($week[$i][$j])) 
      { 
        // Если имеем дело с субботой и воскресенья 
        // подсвечиваем их 
        if($j == 5 || $j == 6)  
             echo "<td><font color=red>".$week[$i][$j]."</font></td>"; 
        else echo "<td>".$week[$i][$j]."</td>"; 
      } 
      else echo "<td>&nbsp;</td>"; 
    } 
    echo "</tr>"; 
  }  
  echo "</table>"; 
?> 




Вот, я собственно из каждой цифры сделал ссылочку методом GET (нужно для показа архива за определённый день)...
Вот... но хочется так, чтобы в календаре отображалась та ячейка (т.е. как-то подсвечивалась), на которую я кликнул... т.е. грубо говоря нужно сделать так, чтобы отображался день (в самом календаре), за который я просматриваю архив... Можно ли это сделать с помощью JS или всё ж таки придётся мучаться с php???

Заранее спасибо!
PM MAIL   Вверх
ksnk
Дата 9.1.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



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


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
solenko
Дата 9.1.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Мучатся в данном случае это как раз о JS реализации. Мне кажется, намного проще как раз вписать класс еще на стороне сервера. И проще и логичней.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 9.1.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



solenko, Может быть, если не использовать якори в адресе перехода. Иначе - только Javascript'ом...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
DiMoN_TD
Дата 9.1.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 16.12.2007

Репутация: нет
Всего: нет



Я та на самом деле ещё неопытный программист, и потому всё что вы тут наговорили, мне ни о чём практически не говорит...  smile 
PM MAIL   Вверх
solenko
Дата 9.1.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Если у вас, например, в $_GET['day'] номер дня то
Код

<?php
 if ($week[$i][$j] == $_GET['day'])
  echo "<td><font color=green>".$week[$i][$j]."</font></td>"; 
else if($j == 5 || $j == 6)  
             echo "<td><font color=red>".$week[$i][$j]."</font></td>"; 
        else echo "<td>".$week[$i][$j]."</td>"; 
?>


Это сообщение отредактировал(а) solenko - 9.1.2008, 14:17


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
ksnk
Дата 9.1.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



DiMoN_TD, чтобы вывести что-то действительно полезное "неопытному программисту", нужно привести реальный код, со "ссылочкой методом GET". Иначе мы с тут с solenko,  будем воображать себе каждый чего-то свое... ;-)



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
DiMoN_TD
Дата 9.1.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 16.12.2007

Репутация: нет
Всего: нет



solenko, 
Хм.. на самом деле это я и сам знал, но этот метод мне немного не подходит, потому что там нужно будет делать проверку на то, есть ли эта переменная, потому как календарь у меня отображается на всех страницах.... потому дофига кода получается... вот и хотелось какую-нить функцию на JS, которая бы меняла класс выбранного дня
PM MAIL   Вверх
solenko
Дата 9.1.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



DiMoN_TD, ну уж простите, телепатия отключена (
1. вынесете календарь в отдельный файл, который будет проверять и инклюдте его откуда нужно 
2. В данном случае проверку можно свести к, например,
 echo "<td ".($week[$i][$j] == @$_GET['day']?"class=\"selected\"":"")."><font color=red>".$week[$i][$j]."</font></td>"; 

на js:
1. Анализируете url страницы (объект location)
2. Находите таблицу календаря и пробегаетесь по ячейкам (DOM Table)
3. находите для каждой ячейки последнего ребенка, т.е. имеено номер дня а не объект font и сравниваете с полученным из url значением.
4. Если да, то присваиваете ячейке css класс (className)

Добавлено через 2 минуты и 35 секунд
Повторюсь -- этот вопрос стоит решать на стороне клиента только если вы подгружаете данные AJAX'ом или, как указал 
ksnk, если на странице информация за несколько дней и вы используете якоря.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.