Проверьте эту скрипку (частичный фрагмент кода): http://jsfiddle.net/QJJb8/addEventListener() без getElementById ссылочный успех?
<button id='mybutton'>MY BUTTON</button>
mybutton.addEventListener('click', mybuttonClick, false);
function mybuttonClick(e){
alert(e.target.textContent+' WAS CLICKED!');
}
Обратите внимание, как я не использую getElementById(), чтобы получить ссылку на эту кнопку. Почему он все еще работает? (Протестировано в Firefox, Chrome и IE9 & 10.)
Является ли это плохой практикой/причудой или встроена функция для элементов кнопки? Если последний, это потрясающий перк/ярлык при использовании элементов кнопки! Или, возможно, я все время использовал метод getElementById()?
// ANSWER UPDATE //////////////////////////////////////// ////////////////////////////
После некоторых исследований кажется, что описанное выше поведение фактически является частью спецификации HTML5. В дополнении к ответу RobG в поле ниже, смотрите также следующие ссылки для большего понимания:
http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/
https://stackoverflow.com/a/3434388/2434324 (ссылка предоставленного yoelp)
http://jsperf.com/named-access-on-the-window-object
Он работает потому что вы получаете ссылку на кнопку непосредственно из прослушивателя событий щелчка (например, параметр «e»), который вы используете для отображения текста кнопки –
@ FilipposKarapetis, но не для добавления слушателя. – RobG
@FilipposKarapetis - на самом деле, мой конкретный вопрос до того, как он даже дойдет до слушателя событий «e» - почему функция работает в первую очередь? Примечание. Mybutton не объявляется нигде. Он указан в идентификаторе HTML, а затем прямо ссылается: mybutton.addEventListener (без getElementById). – calipoop