Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите решить задачку (Простую но непонятную) (https://javascript.ru/forum/dom-window/9613-pomogite-reshit-zadachku-prostuyu-no-neponyatnuyu.html)

Suharik 27.05.2010 18:55

Помогите решить задачку (Простую но непонятную)
 
Всем привет.
Есть <tr> внутри строки несколько ячеек с текстом, одна их которых является ссылкой.
Задача.
Как сделать чтобы пи visited это ссылки менялся цвет всего текста в данной строке? )
Простите если не туда написал. Просто на css не нашел решения, так может с помощью js можно как то сделать. Вот код для примера?
<table>
<th>  </th>
<tr>
<td> текст </td>
<td> текст1 </td>
<td> текст2 </td>
<td> <a href="1.html" > ссылка </a> </td>
<td> текст3 </td>
<td> текст4 </td>
</tr>
</table>


Вот, собственно нужно чтобы при посещенной ссылек весь текст (1,2,3,4) и ссылка стали другим цветом.
Помогите плиз.

trikadin 27.05.2010 19:04

<table><tr><td> <a href="javascript: void()" onclick="this.parentNode.style.color='yellow'"> ссылка </a>dplfsp</td></tr></table>

trikadin 27.05.2010 19:07

href="javascript: void()"
- чтобы сделать ссылку нерабочей.

Suharik 27.05.2010 19:20

Это не повторяет псевдокласс css VISITED, это просто добовление класса. а мне именно VISITED нужно повторить для всех ячеек. чтобы после перезагрузки станица текст был еще новым цветом.

trikadin 27.05.2010 19:26

Не добавление класса, а добавление стиля.

А зачем? Кстати, если в ячейке только ссылка, есть вариант поставить для ссылки стиль
a {
 display: block; 
 width: 100%;
 height: 100%;
 color: #000;
}
a:visited{
 color: yellow;
}


Больше ничего путного не предложу.

subzey 27.05.2010 19:32

Разве что обернуть все в ссылку.

А то Мозилла постепенно затягивает гайки касаемо взаимодействия javascript и :visited. Ибо прайваси.

Suharik 27.05.2010 19:32

Цитата:

Не добавление класса, а добавление стиля.
Да простите там же .style
Последний Ваш код даст мне желтый цвет только для ссылки которая находится в 4 ячейки. А моя задача весь текст который находится в данном <tr> менялся на цвет который задан
a:visited{
	 color: yellow;
	}

Suharik 27.05.2010 19:35

Цитата:

Разве что обернуть все в ссылку.
)) конечно можно каждую ячейку обернуть в ссылку и сделать текст дикорейшен:none для всех ссылок кроме нужной.
но это сколько лишнего кода то мне писать. А если у меня 100 ячеек?))

trikadin 27.05.2010 19:46

Цитата:

Сообщение от subzey (Сообщение 56732)
Разве что обернуть все в ссылку.

М... Без href'а? Тогда ИЕ не поймёт.

trikadin 27.05.2010 20:07

Стоп. В <tr>? Ну, тогда, например, так:
<table border="1">
 <tr>
  <td><a href="javascript: void()" onclick="this.parentNode.parentNode.style.color='yellow'">ссылка</a> dplfsp</td>
  <td>dfsdf</td>
 </tr>
</table>


Типо так. Правда, опять же, изменения не сохранятся при перезагрузке страницы.

Suharik 28.05.2010 11:19

Пример полезный, пригодится спасибо. Но задача так и не решена.

trikadin 28.05.2010 21:57

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

Kolyaj 28.05.2010 22:06

Цитата:

Сообщение от trikadin
прописывать это на сервере

А откуда сервер знает, какие ссылки посещены?

trikadin 28.05.2010 22:09

Я имел в виду, что ему можно об этом сказать) Например, при посещении ссылки - AJAX-скрипт, который переставит класс этой ссылки, или что-то в этом духе))

Kein 01.06.2010 20:25

что-то типа:
document.ready(function(){
   $('#table a:visited').each(function(){
       $(this.parentNode.parentNode).find(a).addClass('visited');
   });
});

Sweet 01.06.2010 22:30

Есть еще вариант брать при загрузке страницы (при необходимости и при нажатии на ссылку) цвет ссылки с помощью:
var a = document.getElementsByTagName('A')[0]
var cs = a.currentStyle || window.getComputedStyle(a, null)

Ну и .style.color = cs.color кому надо:)


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