2016-07-01 2 views
1

Какие параметры передаются обработчику DOM onclick? Как разрешены параметры/каков контекст выполнения обработчика DOM onclick?Параметры DOM onclick handler/контекст выполнения

Смотрите это jsbin (с помощью консоли браузера Dev как jsbin один не очень хорошо) или код ниже:

<!-- Remove the id="someid" and see what happpens --> 
<input type="text" id="someid" onclick="clickHandler(this,event,someid)'"/> 

<script> 
    function clickHandler() { 
     console.log(arugments); 
    } 
</script> 

Ссылки

MDN DOM on-event handlers

Дополнительные детали

I что присоединение событий в DOM не рекомендуется. Но этот метод по-прежнему используется в устаревших приложениях, и я не могу найти никакой документации, которая выходит за рамки передачи обработчика параметра «this».

+3

Так что вы спрашиваете здесь? Аргументы, которые находятся в обработчике встроенного события, явно передаются, и, видя, что это просто функция, вы можете передавать все, что хотите. Вы просто смущены тем, почему 'someid' указывает на элемент, если это так, потому что любой элемент с идентификатором добавляется к глобальному« window.someid »в качестве ссылки на элемент? – adeneo

+0

@adeneo О, я сбился с толку, это глобальный контекст, и я не знал, что элемент с идентификатором был добавлен к объекту окна под тем же именем. Можете ли вы указать мне на любую документацию, в которой говорится, что элемент с идентификатором добавлен в объект окна? – ksrb

+0

http://stackoverflow.com/questions/3434278/do-dom-tree-elements-with-ids-become-global-variables – adeneo

ответ

1

Это был случай смущения, и, полагая, что обработчик, связанный в атрибуте HTML, каким-то образом имел другой контекст исполнения.

Обработчик все еще выполняет в глобальном объекте scope/window. Поэтому, как и ожидалось, объект события в функции ссылается на объект window.event, а некоторый объект ссылается на window.someid.

<input type='text' id='someid' 
onclick=" 
    clickHandler(this, 
       event, //window.event 
       someid)" //window.someid'/> 

Автоматическое создание объекта окна для элементов с уникальными идентификаторами является то, что я не знал, что и было указано в комментарии на вопрос видят:

Do DOM tree elements with ids become global variables?

Смежные вопросы