Javascript.RU

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

Получение места вызова функции внутри этой функции
Доброго дня (ночи), уважаемые форумчане.
Столкнулся со следующей проблемой и никак не могу ее решить, облазил "весь интернет", искренне надеюсь на вашу помощь.

Итак, имеются четыре кнопки:

<section class="right" id="nav">
	<div id="b1" onmouseover="test()">Кнопка 1</div>
	<div id="b2" onmouseover="test()">Кнопка 2</div>
	<div id="b3" onmouseover="test()">Кнопка 3</div>
	<div id="b4" onmouseover="test()">Кнопка 4</div>
</section>


Нужно изменить цвет кнопки при наведении, НО сделать это нужно через отдельную функцию, в моем случае, это "test()". Проблема в том, что "this.", если его вызвать непосредственно в функции, а не просто после "onmouseover" не хочет работать и выдает ошибку в отладчике

У меня появилась такая идея. А что, если я получу место вызова внутри этой функции, то есть какой-то код внутри функции "test()" укажет мне, какая из кнопок вызвала ее, путем возвращения ID. То есть b1 или b2 и так далее. И, зная ID, при помощи простой сортировки путем использования конструкции if () {//код}, я бы добился нужного результата.

Пытался сделать это при помощи

var t = event.target;
alert(t.className); // пока что alert, это для проверки


Но с "t.Id" это не получается.

Может кто-то предложит иной вариант или дополнит мой?

Последний раз редактировалось eucalipt, 27.08.2014 в 01:16.
Ответить с цитированием
  #2 (permalink)  
Старый 27.08.2014, 01:26
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

<section class="right" id="nav">
  <div id="b1" onmouseover="test(this)">Кнопка 1</div>
  <div id="b2" onmouseover="test(this)">Кнопка 2</div>
  <div id="b3" onmouseover="test(this)">Кнопка 3</div>
  <div id="b4" onmouseover="test(this)">Кнопка 4</div>
</section>
<script>
  function test(el) {
    console.log(el.id);
  }
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 27.08.2014, 01:30
Интересующийся
Отправить личное сообщение для eucalipt Посмотреть профиль Найти все сообщения от eucalipt
 
Регистрация: 27.08.2014
Сообщений: 19

Спасибо большое. Но еще такой вопрос. Этот console.log я могу вывести в отдельную переменную? И потом работать с ней как с обычными данными?
Ответить с цитированием
  #4 (permalink)  
Старый 27.08.2014, 01:51
Интересующийся
Отправить личное сообщение для eucalipt Посмотреть профиль Найти все сообщения от eucalipt
 
Регистрация: 27.08.2014
Сообщений: 19

Решение оказалось простым до не могу. Аж самому смешно стало.
Оценив решение Poznakomlus'a пришел к выводу, что получить ID можно просто посредством
el.id
И все. А вывести его уже можно при помощи
alert(el.id);
Но задача у меня не в выводе.
Пользуйтесь, может кому и пригодится
А Poznakomlus апнул карму и передаю огромное спасибо за наводку!
Ответить с цитированием
  #5 (permalink)  
Старый 27.08.2014, 09:13
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

А еще можно так:
<section class="right" id="nav">
  <div id="b1" onmouseover="test.call(this)">Кнопка 1</div>
  <div id="b2" onmouseover="test.call(this)">Кнопка 2</div>
  <div id="b3" onmouseover="test.call(this)">Кнопка 3</div>
  <div id="b4" onmouseover="test.call(this)">Кнопка 4</div>
</section>
<script>
  function test() {
    alert(this.id);
  }
</script>

С помощью метода call, который есть у любой функции (да-да, функции в js - тоже объекты), можно вызвать эту функцию в определенном контексте.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получение значения переменной из функции java script valdur2000 Общие вопросы Javascript 1 14.11.2013 20:22
Получение значения переменной внутри обработчика события jQuery Mbenga Общие вопросы Javascript 2 01.07.2013 10:57
Получение элемента в функции, используя each() ansi_str jQuery 0 30.11.2012 09:48
Получение ответа от функции в которой выполняется ajax Kelly Общие вопросы Javascript 7 10.09.2012 16:23
Ячейка таблицы - ссылка. Внутри этой ячейки другие ссылки. Alexd jQuery 3 19.04.2012 16:19