Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Динамическре изменение цвета ячейки по нажатию на ссылку (https://javascript.ru/forum/dom-window/5398-dinamicheskre-izmenenie-cveta-yachejjki-po-nazhatiyu-na-ssylku.html)

Bagira 12.10.2009 13:09

Динамическре изменение цвета ячейки по нажатию на ссылку
 
Подскажите , пожалуйста, как можно сделать, чтоб по нажатию на ссылку фон ячейки , в которой находится ссылка становился желтым (к примеру), а когда не нажата - зеленый. То есть, если нажата ссылка и нужный контент подгружен, то цвет ячейки - один, а если ссылка не активировалась - то другой.
Я делала так:
Но это это срабатывает толко при клике на ссылку, а надо, чтоб цвет ячейки был постоянным:
var last_change = null;
var last_color = null;
function ChangeColor(id, color){
   if( last_change != null ){
       last_change.style.backgroundColor = last_color;
   }
   last_change = document.getElementById(id); 
   last_color = document.getElementById(id).style.backgroundColor;
   document.getElementById(id).style.backgroundColor = color;   
}

<table id="table" border="1" bgcolor="Gray"  >
<tr>

   <td id="td1" style="background-color:gray;"><a onclick="ChangeColor( 'td1', 'yellow' )" href="?page1=1">HTML 1</a></td>

   <td id="td2" style="background-color:gray;"><a onclick="ChangeColor( 'td2', 'yellow' )" href="?page2=2">HTML 2</a></td>

   <td id="td3" style="background-color:gray;"><a onclick="ChangeColor( 'td3', 'yellow' )" href="?page3=3">HTML 3</a></td>
			    
</tr>			 
</table>

Gozar 12.10.2009 16:32

чтобы цвет ячейки был постоянным, нужно смотреть url и в соответствии с ним менять фон. У вас после клика по ссылке вы переходите на новую страницу у которой все значения еще не изменены.

По событию онлоад смотрим урл и в зависимости от него меняем цвет ячейки

Serg_pnz 13.10.2009 09:57

Посмотрите это еще http://www.ponedelnikov.net/index.ph...op=page&pid=20

Bagira 13.10.2009 10:46

Цитата:

Сообщение от Gozar (Сообщение 32283)
чтобы цвет ячейки был постоянным, нужно смотреть url и в соответствии с ним менять фон. У вас после клика по ссылке вы переходите на новую страницу у которой все значения еще не изменены.

По событию онлоад смотрим урл и в зависимости от него меняем цвет ячейки

Я плохо разбираюсь в js. Подозреваю что надо что-то такое сделать:
var last_change = null;
var last_color = null;
url = window._content.document.location
function ChangeColor(id, color) {
   if( last_change != null ){ 
       last_change.style.backgroundColor = last_color;
   }
   if (url == 'http://localhost/tabs/admin.php?page2=2' ) {
   last_change = document.getElementById(id); 
   last_color = document.getElementById(id).style.backgroundColor; 
   document.getElementById(id).style.backgroundColor = color;  
   }

Повесила этот код на onload в <body>, но это работает только для одной ячейки, а как определять id для всех остальных ячеек. И правильно ли я определяю url? Помогите пожалуйста, или дайте ссылку, где про это почитать. По ссылкам страницы грузятся в iframe

Bagira 13.10.2009 12:09

Сделала во так, покритикуйте , пожалуйста: может урлы можно как то не так длинной передавать?
var last_change = null;
var last_color = null;

url = new String(window._content.document.location);
temp = url.split('?');

function ChangeColor(id, color) {
   if( last_change != null ){ 
       last_change.style.backgroundColor = last_color;
   }
   if ((url == 'http://localhost/tabs/admin.php?page1' && temp[1] == 'page1') ||
      (url == 'http://localhost/tabs/admin.php?page2' && temp[1] == 'page2') ||
      (url == 'http://localhost/tabs/admin.php?page' && temp[1] == 'page3')) {
   last_change = document.getElementById(id); 
   last_color = document.getElementById(id).style.backgroundColor; //alert(last_color);
   document.getElementById(id).style.backgroundColor = color;  
   } 
}


В <body> передаю так:
<body oncopy="return false" onload="ChangeColor(temp[1],'yellow');" >
<table id="table" border="1" bgcolor="Gray"  >
		     <tr>
			    <td id="page1"><a href="?page1">HTML 1</a></td>
			    <td id="page2"><a href="?page2">HTML 2</a></td>
			    <td id="page3"><a href="?page3">HTML 3</a></td>
			    
			 </tr>
</table>
</body>

blackcat 07.04.2011 23:13

Спасибо! Это то, что мне было нужно!
 
Bagira, спасибо большое, искала информацию по похожей теме, что у Вас, только мне необходимо изменять class ячейки, Ваш скрипт очень помог! И, конечно спасибо всем, кто помог Bagira :dance: Наконец, получилось изобразить в меню то, что я хотела!

Bagira 08.04.2011 10:46

blackcat, на здоровье! Рада, что мой вопрос Вам помог. И , конечно, спасибо всем помогавшим.

blackcat 08.04.2011 16:54

Проблема в IE
 
Как хорошо, что темка ещё не умерла, дело в том что, в firefox'е всё работает на ура, а вот IE7 никак не хочет..открывает страницу с ошибкой:
'temp' - определение отсутствует в строке
<body oncopy="return false" onload="ChangeColor(temp[1],'yellow');" >
и Предполагается наличие идентификатора в строке
function ChangeColor(id, color) {
Может сталкивался кто? Что не нравится IE?

Я также пробовала добавить строку
var temp = new Array();

перед
temp = url.split('?');

но ситуация не изменилась, пока написала всё с помощью php,
но если кто даст подсказку по поводу вышеприведённого случая, буду премного благодарна!


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