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


Автор: svlary 19.8.2015, 11:48
Пытаюсь сделать так, что бы ячейка таблицы меняла цвет фона, когда над ней проходит указатель мыши. Для этого пишу нечто вроде:

Код

<td onmouseover="this.setAttribute(bgColor, 0x00FF00)">Данные в ячейке</td>


Ничего не происходит, а инспектор объектов выдаёт сообщение об ошибке:

Код

InvalidCharacterError: String contains an invalid character



И как бы я не пытался изменить второй параметр, он на него ругается. Если пишу green, то ошибка - переменная green не описана. Если пишу 'green', то опять - недопустимые символы.
Если совсем убираю второй параметр:

Код

<td onmouseover="this.setAttribute(bgColor)">Данные в ячейке</td>


то выдаётся сообщение

Код

TypeError: Not enough arguments to Element.setAttribute.


что вполне разумно...

Что я делаю не так?

Автор: Sartorius 19.8.2015, 11:57
Код

<td onmouseover='this.setAttribute("bgColor", "0x00FF00")'>Данные в ячейке</td>

Автор: svlary 19.8.2015, 13:18
Спасибо за ответ!

 Так действительно, сообщений об ошибках не выдаётся. Но цвет фона не меняется :-(
Хотя инспектор объектов, показывает (когда я провожу курсором мышки над ячейкой), что значение этого свойства действительно изменяется!
Может нужно какой-то refresh()  поставить ?

Автор: ksnk 19.8.2015, 13:30
Цвет в строковом представлении записывается не черех 0x..., а через #
Код

<td onmouseover='this.setAttribute("bgColor", "#00FF00")'>Данные в ячейке</td>

Автор: Sartorius 19.8.2015, 16:11
Цитата(ksnk @  19.8.2015,  14:30 Найти цитируемый пост)
Цвет в строковом представлении записывается не черех 0x..., а через #

Хах А я даже не заметил Причем Хром парсит и 0x

Автор: svlary 20.8.2015, 11:18
Записал сейчас эту строку в виде :

Код

<td onmouseover='this.setAttribute("bgColor","#00FF00")' onmouseout='this.setAttribute("bgColor","#FF0000")'>Данные в ячейке</td>


Когда провожу курсором мыши над ячеёкой, то инспектор объектов показывает, что свойство bgColor ячейки реально меняется. Но визуально это никак не проявляется.
Может быть дело в том, что у меня в стилях записано:

Код

td {                                                                                                                                     
  padding: 5;                                                                                                                      
  background-color: #BFBFBF;                                                                                                       
}


И динамически это изменить невозможно ? Браузер - Firefox 25.0.1                                                                                                                                        

Автор: ksnk 20.8.2015, 11:54
Значение в атрибуте слабее, чем значение в стиле. Нужно стиль править
Код

<td onmouseover='this.style.backgroundColor="#00FF00";' onmouseout='this.style.backgroundColor="#FF0000";'>Данные в ячейке</td>

Автор: svlary 20.8.2015, 12:46
Цитата(ksnk @  20.8.2015,  11:54 Найти цитируемый пост)
Значение в атрибуте слабее, чем значение в стиле. Нужно стиль править


Исправил. Всё заработало...  smile 
А я думал, что JavaScript - простой язык...

Спасибо за ответ!

Автор: Sartorius 20.8.2015, 13:22
Почему бы тогда через CSS не сделать просто? )) Раз уж есть какой-то CSS для таблицы...
http://www.w3schools.com/cssref/sel_hover.asp

Автор: svlary 21.8.2015, 09:08
Да, действительно - очень просто!
Спасибо за совет!

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