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


Автор: Astraller 3.10.2007, 14:57
Собственно задача:
PHP скрипт выдаёт стандартный HTML но некоторые его элементы при onmouseout должны подсвечиваться. События креплю к ним скриптом - чтобы не засорять код. 
Возникает вопрос каким свойством пометить теги чтобы не нарушать спецификацию, но скриптом можно было легко собрать эти обьекты в один массив для дальнейшей работы?  smile 

PS Возможно немного сумбурно обьяснил но я уже пол дня с этим бьюсь  smile 

Автор: dsCode 3.10.2007, 16:45
Astraller, а эти (подсвечиваемые) элементы статичные или же в процессе какой-то элемент может стать "подсвечиваемым", с какого-то это свойство может быть снято? Если статические и если предполагается обязательная работа с ними, можно сразу массив сформировать, где Вы крепите к ним события (на этом же этапе Вы знаете все элементы). Если динамические
Цитата(Astraller @  3.10.2007,  14:57 Найти цитируемый пост)
каким свойством пометить теги чтобы не нарушать спецификацию

а какое будет нарушение спецификации? Что, разве нельзя написать свой любой аттрибут? <span id="test" podsvechivaemiy="true">test</span> =) Пройтись циклом по DOM'у, получить всех подсвечиваемых.

Автор: Astraller 3.10.2007, 16:51
Да - в процессе работы они могут меняться. Но это уже пол беды.

Странно, у меня валидатор ругается когда я например к ячейке TD пытался присвоить name=".."

И IE/Opera не нашли все эти елементы по document.getElementsByName... :(

Автор: cruelangel 3.10.2007, 18:08
<span onmouseover="over(this)"> неужели удастся сильно сэкономить? </span>

Автор: Astraller 3.10.2007, 21:08
Ну не только onmouseover но и onmouseout. Даи кроме экономии там есть и другие проблемы.

Автор: cruelangel 3.10.2007, 21:19
> Ну не только onmouseover но и onmouseout.

нет, onmouseover достаточно


> Даи кроме экономии там есть и другие проблемы. 

какие?

Автор: Astraller 3.10.2007, 21:28
Хм. Ну-ка поподробнее о том что onmouseover достаточно.

Обьясню - половину кода пишет менеджер (блондинко) которая просто не способна описать более двух ковычек в свойстве тега.

Автор: cruelangel 3.10.2007, 21:31
Загадка: может ли onmouseout произойти раньше onmouseover? smile

Автор: Astraller 4.10.2007, 08:57
Отгадка: для одного элемента - нет! Но как тушить подсветку без onmouseout??

Автор: dstorm81 4.10.2007, 09:20
легко
к примеру когда создаешь элемент который должен выполнять спецификацию
присвой ему alt или title =1 то бишь это и будет идентификация твоего тэга

затем
var makeRoll=function(e)
{
e=e||window.event;
var E=e.target||e.srcElement;
if(E.nodeName=="A" && E.alt=='1'){E.style.background="red"}// к примеру это ссылки к которых alt=1
}
document.ounmouseout=makeRoll;

Автор: Astraller 4.10.2007, 10:05
Хм. Классное решение - спасибо  smile 

Автор: cruelangel 4.10.2007, 12:09
только событие надо вешать не на документ, а на элемент...

Автор: Astraller 4.10.2007, 12:11
Цитата(cruelangel @ 4.10.2007,  12:09)
только событие надо вешать не на документ, а на элемент...

Предложите своё решение.

PS Снимаю шляпу - вы были правы smile

Автор: SelenIT 4.10.2007, 15:07
Имхо, лучше всего использовать CSS-класс - его можно сделать одновременно и маркером элементов, подлежащих подсветке, и для объединения CSS-свойств, которые будут меняться при наведении.

А насчет плюсов и минусов глобального перехвата клика с последующей проверкой "а что же это мы кликнули" против прицельного навешивания обработчиков отдельным элементам уже была дискуссия , например, http://forum.vingrad.ru/forum/topic-119868.html.

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