Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вернуть первоначальный цвет строке


Автор: nicka47 15.5.2005, 22:04
Я вывожу на страницу таблицу, строки которой окрашены через ряд в серый цвет. Я хочу чтобы при наводе на строку маусом цвет строки менялся, а при отводе возвращался в первоначальный.
Если б у меня все строки таблицы имели изначально 1 цвет , то проблемы бы не было, но так так они через ряд серые, то надо запоминать при наводе мауса какой цвет имела строка и при отводе мауса возвращать ей этот цвет, чтобы полосатость таблицы сохранялась.
Если не учитывать полосатость таблицы , то я использовала следующий код для выделения строки при наводе маусом в определенный цвет

Код

onmouseover="this.style.backgroundColor = '#FBCFC8'" onmouseout="this.style.backgroundColor = '#F5F5F5'"


Как же запоминать цвет строки smile

Автор: Sardar 15.5.2005, 22:26
Есть два типа стилей, RuntimeStyle и стили из сорца страницы. Когда ты изменяешь стили, ты изменяешь стиль времени исполнения, если же значение стиля не определенно, то оно берётся из сорца(если и там не определенно, то беруться из дефолтов браузера, весь бутерброд называеться эффективными(наследуемыми) стилями). В коде это:
Код

onmouseover="this.style.backgroundColor = '#FBCFC8'" onmouseout="this.style.backgroundColor = ''"

Автор: Aliance 15.5.2005, 22:28
А цвета жестко заданы в HTML`е?
Кинь код.

Если заданы - то можно так:
Код

<table>
<tr onmouseover="hilite(this, 1)" onmouseout="hilite(this, 0)" style="background-color: pink">
<td>розовый</td>
</tr>
<tr onmouseover="hilite(this, 1)" onmouseout="hilite(this, 0)" style="background-color: gray">
<td>серый</td>
</tr>
<tr onmouseover="hilite(this, 1)" onmouseout="hilite(this, 0)" style="background-color: pink">
<td>розовый</td>
</tr>
</table>


Код

function hilite(row, flag) {
// var lastcolor = row.style.backgroundColor;
// alert(lastcolor);
   switch (flag) {
      case 0:
         row.style.backgroundColor = '';
         break;
      case 1:
         row.style.backgroundColor = '#FBCFC8';
         break;
      default:
         alert('Что-то не то =/');
         break;
   }
}

Автор: nicka47 15.5.2005, 23:29
Цитата(Sardar @ 15.5.2005, 22:26)
Есть два типа стилей, RuntimeStyle и стили из сорца страницы. Когда ты изменяешь стили, ты изменяешь стиль времени исполнения, если же значение стиля не определенно, то оно берётся из сорца(если и там не определенно, то беруться из дефолтов браузера, весь бутерброд называеться эффективными(наследуемыми) стилями).


ты прав, помогло, спасибо

Автор: Guest 2.6.2005, 11:54
а если у меня 2 стобца, 1 розовый, второй серый, а при наводе на строку хочу красный цвет всей строки, что делать тогда?
Потому что когда я задаю столбцу цвет, то для него уже этот скрит с наводкой курсора не работает

Автор: Sardar 2.6.2005, 12:51
Ловим события на строке, пробегаемся по ячейкам(коллекция cells), выставляем цвет или ставим "" что бы вернуть всё как было. В чём проблема?

Автор: Guest 2.6.2005, 15:06
Цитата(Sardar @ 2.6.2005, 12:51)
пробегаемся по ячейкам(коллекция cells),

вот это проблема, я не знаю как, можно пример smile

Автор: Aliance 2.6.2005, 15:45
Вот пример использования коллеции cells[]
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>© AlianceHTMLEditor [ http://editor.sut.net.ru/editor.html ]</TITLE>
<script type="text/javascript" language="JavaScript">
<!--
function chang (trname, cellind) {
   var tr = document.getElementById(trname);
   var cell = tr.cells[cellind-1];
   cell.innerHTML = 'ЗАМЕНЕННОЕ ДВА';
   cell.style.backgroundColor = 'pink';
}
// -->
</SCRIPT>
</HEAD>

<BODY>

<TABLE border=1 align=center Cellpadding=10>
<TR id="tr1">
<TD id="td1">один</TD>
<TD id="td2">два</TD>
<TD id="td3">три</TD>
</TR>
</TABLE>

<div id="clickable" onclick="chang('tr1', 2)">заменить слово в ячейке номер два</div>

</BODY>
</HTML>

Автор: Guest 2.6.2005, 18:07
Aliance, спасибо, помог smile

Автор: Aliance 2.6.2005, 18:38
Помог Sardar, я просто показал пример работы с тем, что назвал он smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)