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


Автор: Royan 1.3.2009, 21:09
Допустим у меня есть такой HTML код

Код

<DIV onmouseover="showTip('tagTip')";>Text</DIV>


Задача: Внутри функции showTip(), получить ссылку на объект DIV'а, на котором выстрелило событий onmouseover.
Ограничение: Нельзя использовать вариант с передачей id тега или объекта тега в функцию showTip(), т.е. следующие два варианта не валидны:

Код

<!--Вариант 1-->
<DIV id="div_1" onmouseover="showTip('div_1', 'tagTip')";>Text</DIV>

<!--Вариант 2-->
<DIV onmouseover="showTip(this, 'tagTip')";>Text</DIV>

Автор: bars80080 1.3.2009, 21:35
почему this не валидно?

Автор: Soah 2.3.2009, 00:18
Код

<script type="text/javascript">
    function showTip(event, tag) {
        event = event || window.event;
        var thisElem = event.target || event.srcElement;
        
        alert(thisElem.nodeName);
    }
</script>

<div onmouseover="showTip(event, 'tagTip')";>Text</div>

 smile 

и всё таки, почему this не валидно?
а функцию showTip(), вызывает только этот div?

Автор: Royan 2.3.2009, 01:39
Soah, Большое спасибо! Но на самом деле я ищу способ добраться до объекта event (и как следствие до теги на котором произошло событие) не посылая доп параметров в функцию, не то чтобы это было обусловлено какой-то технической необходимостью это скорее выпендреж с моей стороны.

Автор: Royan 2.3.2009, 02:01
Поискал сейчас ни caller ни что либо другое не подходит, но firebug как то ведь может добраться до события...

Автор: Zeroglif 2.3.2009, 10:56
Royan,

Если для Mz, то event:

Код

arguments.callee.caller.arguments[0]


но это свойство (arguments.caller) deprecated, начиная с JavaScript 1.3, лучше функцию всё-таки переписать...

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