Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Изменение фона ячейки таблицы
 
 автор: segazav   (01.11.2014 в 22:44)   письмо автору
 
 

Здравствуйте!

Есть обычная таблица, в ячейках таблицы находятся текстовые ссылки.
Подскажите, как можно сделать изменение фона ячейки с ссылкой, которая соответствует загруженной странице и сделать ссылку не активной.
Чтобы было визуально понятно, какая ячейка со ссылкой соответствует открытой странице.

Конечно на PHP это можно сделать, но нужно на стороне клиента.

Вот так работает, но как сделать ссылку не активной, т.е. просто текстом???
<script>
$(function(){
    $('.tabl_obyavl a').each(function(){
        url = String(document.location).split('//')[1];
        href = $(this).attr('href');
        pos = url.indexOf(href) +1;
        if(pos) {
            $(this).parent().removeClass('tabl_obyavl');
            $(this).parent().addClass('tabl_obyavl1');
            $(this).removeClass('linc');
            $(this).addClass('linc1');
        }
    });
});
</script>



<table width="100%" border="0" cellpadding="5" cellspacing="0">
              <tr>
                <td align="center" valign="middle" class="tabl_obyavl"><a href="....php?razd=m" class="linc">Мобильные телефоны</a></td>
                <td align="center" valign="middle" class="tabl_obyavl"><a href="....php?razd=t" class="linc">Стационарные телефоны</a></td>
                <td align="center" valign="middle" class="tabl_obyavl"><a href="....php?razd=r" class="linc">Рации и радиостанции</a></td>
                <td align="center" valign="middle" class="tabl_obyavl"><a href="....php?razd=p" class="linc">Другое</a></td>
                </tr>
            </table>

  Ответить  
 
 автор: confirm   (03.11.2014 в 18:13)   письмо автору
 
   для: segazav   (01.11.2014 в 22:44)
 

>Конечно на PHP это можно сделать, но нужно на стороне клиента.

И для чего этой ерундой заниматься клиенту, если серверу это сделать всего один плевок? Серверу достаточно для это проверять всего лишь один GET-параметр, а клиенту сравнивать целую строку.

Напишите вот такое:

<a onmouseover="alert(this.href)" href="?var=1">text</a>


Что показывает сообщение? Как видите это будет полный адрес, включая и протокол, хотя в атрибуте указан относительный адрес и даже без имени скрипта. Зачем же тогда:

String(document.location).split('//')[1];

Если уж на стороне клиента сравнивать по параметру, то тогда location.search, а не то что вы делаете.

  Ответить  
 
 автор: segazav   (04.11.2014 в 19:08)   письмо автору
 
   для: confirm   (03.11.2014 в 18:13)
 

Я прекрасно понимаю, что в этом случае - PHP это намного лучше, но в моём случае это будет очень трудоемкий процесс замены кода.

  Ответить  
 
 автор: confirm   (04.11.2014 в 19:39)   письмо автору
 
   для: segazav   (04.11.2014 в 19:08)
 

Это почему трудоемкий процесс? Вы что руками собственными код пишите при каждом запросе страницы или же это все-таки автомат получающий данные и должным образом их форматирующий?

Разберитесь с логикой скрипта своего, с данными, и тогда такой "отмазки" не будет. Клиент все-таки не для проблем, которые по необдуманности возникают, и решать которые теперь обязан он.

  Ответить  
 
 автор: segazav   (25.11.2014 в 18:52)   письмо автору
 
   для: confirm   (04.11.2014 в 19:39)
 

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

Например, если адрес ......php?razd=uslugi_stroit то меняется класс у ссылки с таким же адресом и ещё у ссылки с адресом: ......php?razd=uslugi

Функция document.location.search не совсем подходит, т.к. сравнение нужно всей строки после доменного имени, а не только get параметров.

<script>
$(function(){
$('.tabl_obyavl a').each(function(){
url = String(document.location).split('//')[1];
href = $(this).attr('href');
pos = url.indexOf(href) +1;
if(pos) {
$(this).parent().removeClass('tabl_obyavl');
$(this).parent().addClass('tabl_obyavl1');
$(this).removeClass('linc');
$(this).addClass('linc1');
}
});
});
</script>

  Ответить  
 
 автор: confirm   (25.11.2014 в 22:18)   письмо автору
 
   для: segazav   (25.11.2014 в 18:52)
 

location.search, это не функция, а метод объекта location, и после домена нет строк.
Объект location принадлежит объекту window - window.location, поэтому window можно и опустить, если структура документа не фреймы.

Для строковых операций нужно получить url, то есть:

var url = location.toString()

А параметры вплоть до протокола доступны из объекта.

  Ответить  
 
 автор: segazav   (25.11.2014 в 23:59)   письмо автору
 
   для: confirm   (25.11.2014 в 22:18)
 

Я уже не знаю даже, что тут можно применить, ничего не подходит.
Данный код срабатывает 2 раза, т.к. бывает, что название самой страницы совпадает и get параметры тоже.
Я уже пробовал сравнивать с конца Url lastIndexOf
Сравнить просто 2 строки тоже не получается, т.к. в ссылках прописаны пути без домена.
Отрезать URL тоже не вариант, т.к. бывают разные каталоги и степень вложения от главной страницы.

  Ответить  
 
 автор: confirm   (27.11.2014 в 00:40)   письмо автору
 
   для: segazav   (25.11.2014 в 23:59)
 

Это называется "маяться от скуки". Хотите определять стили - определяйте их на стороне клиента, для него это будет плевой задачей, нужно только определить условие и все.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования