Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.05.2011, 16:24
Интересующийся
Отправить личное сообщение для setter Посмотреть профиль Найти все сообщения от setter
 
Регистрация: 04.05.2011
Сообщений: 19

Выделение элемента при наведении
Задача такая: нужно при наведении на любой элемент страницы выделить его, но, выделить именно 1 элемент.
Моя реализация чуть ниже. Проблема в том, что при наведении он выделяет и родителей элемента.
function MouseOver()
			{
				this.style.background="#FFFF00";
				this.style.color="#000";
				this.style.cursor="pointer";
				this.style.border="1px solid #FF0000";
			}
			
			function MouseOut()
			{
				this.style.background="";
				this.style.color="";
				this.style.border="";
			}
			
			function start() {
				var elements = document.getElementsByTagName("*");
				for(i=0; i<elements.length; i++)
				{
					if(elements[i].tagName!="BODY" && elements[i].tagName!="HTML")
					{
						elements[i].onmouseover = MouseOver;
						elements[i].onmouseout = MouseOut;
					}
				}
			}

			window.onload = start;

Последний раз редактировалось setter, 04.05.2011 в 16:31.
Ответить с цитированием
  #2 (permalink)  
Старый 04.05.2011, 16:37
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

<html>
<head>
<script type="text/javascript" language="javascript">
function over(e) {
	var e = e || window.event;
	var elem = e.srcElement || e.target;
	var relatedTarget = e.relatedTarget || e.fromElement
	relatedTarget.style.background="";
    relatedTarget.style.color="";
    relatedTarget.style.border="";
	
	if (elem.tagName == 'BODY')
		return;
	elem.style.background="#FFFF00";
    elem.style.color="#000";
    elem.style.cursor="pointer";
    elem.style.border="1px solid #FF0000";
}
</script>
</head>
<body onmouseover="over(event);">
<div>
	<img src="http://javascript.ru/forum/images/smilies/smile.gif" /><br />
	<span>text text text text</span><br />
	<div>other text other text other text</div>
</div>
<img src="http://javascript.ru/forum/images/smilies/tongue.gif" />
<span>bla bla bla bla</span>
</body>
</html>
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 04.05.2011 в 16:46.
Ответить с цитированием
  #3 (permalink)  
Старый 04.05.2011, 16:51
Интересующийся
Отправить личное сообщение для setter Посмотреть профиль Найти все сообщения от setter
 
Регистрация: 04.05.2011
Сообщений: 19

спасибо, а как можно использовать без "<body onmouseover", а прямо в js? и исключить тег body из выделения
Ответить с цитированием
  #4 (permalink)  
Старый 04.05.2011, 16:54
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

window.onload = function() {
	document.body.onmouseover = over;
}


elem.tagName - имя тега текущего элемента
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #5 (permalink)  
Старый 04.05.2011, 17:12
Интересующийся
Отправить личное сообщение для setter Посмотреть профиль Найти все сообщения от setter
 
Регистрация: 04.05.2011
Сообщений: 19

спасибо большое.
последний вопрос. не знаете случайно, как найти позицию (номер символа) того самого элемента в исходном коде по клику?
Ответить с цитированием
  #6 (permalink)  
Старый 04.05.2011, 17:15
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

1. Что значит
Сообщение от setter
позицию (номер символа)
?

2. По клику - это уже другое событие, тут уже надо еще и onclick вешать на документ.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #7 (permalink)  
Старый 04.05.2011, 17:48
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

walik,
e.fromElement и e.relatedTarget могут быть null, например, если курсор наведен из-за пределов окна. А это грозит ошибкой "не могу присвоить свойство null/undefined".
Если же курсор уводится за окно, событие mouseover, емнимс, не вызовется.
Ответить с цитированием
  #8 (permalink)  
Старый 04.05.2011, 17:56
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

1.
Сообщение от subzey
e.fromElement и e.relatedTarget могут быть null, например, если курсор наведен из-за пределов окна.
Об этом не подумал))

2.
Сообщение от subzey
Если же курсор уводится за окно, событие mouseover, емнимс, не вызовется.
Для этого уже можно разбить на 2 функции (mouseover и mouseout)
Если сделать так, то первая проблема сразу решается.


В любом случае не собирался писать идеальный код, просто хотел показать более компактный (и по моему более правильный) вариант чем предложенный setter
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 04.05.2011 в 17:59.
Ответить с цитированием
  #9 (permalink)  
Старый 04.05.2011, 19:06
Интересующийся
Отправить личное сообщение для setter Посмотреть профиль Найти все сообщения от setter
 
Регистрация: 04.05.2011
Сообщений: 19

Сообщение от walik Посмотреть сообщение
1. Что значит

?
ну например есть следующий код
<html>
	<body>
		<h1>text</h1>
	</body>
</html>

и при нажатии на text нужно узнать его позицию (в коде)
например в этом коде позиция будет 22
думаю конечно что это не реально, но все же может есть какой-либо способ?
Ответить с цитированием
  #10 (permalink)  
Старый 04.05.2011, 19:09
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Что то я не вникаю))) откуда взята цифра (позиция) 22 ?
Если взять с корня то он идет 3-й по счету: html -> body -> h1
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение ссылки при наведении на другую warobushek Элементы интерфейса 10 31.05.2012 17:16
Изменение изображения при наведении mishko_o Элементы интерфейса 4 24.10.2011 16:20
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
menu с выпадающими подменю при наведении и раздвижное при клике bugor Элементы интерфейса 3 04.10.2010 14:32