пара причин. По сути, это псевдоним интерфейса DOM Level 1 element.onclick
, который допускает только одного прослушивателя событий.
Другая причина в том, что это просто философски неправильно. Это приводит к плохо организованному коду: вы смешиваете декларативный язык с функциональным языком, который включает в себя огромное количество логики при его исполнении.
Правильный путь будет:
element.addEventListener('click', function() {
console.log('hello world');
}, false); // required for old gecko
Или в IE:
element.attachEvent('onclick', function() {
console.log('hello world');
});
или, по крайней мере, очень , используйте модель DOM уровня 1:
element.onclick = function() {
console.log('hello world');
};
(Также обратите внимание, что alert
- это плохая практика, она блокирует выполнение всей страницы.)
Другая причина заключается в том, что вы не получаете доступ к какому-либо объекту события, который вы обычно получаете в качестве первого аргумента обратного вызова слушателя. (Вы, по сути, находитесь внутри колбэка при установке атрибутов [event], поэтому я не уверен, можете ли вы использовать аргументы [0] или как различные механизмы рендеринга реализуют его. Это очень неудобно, поэтому лучше связывать события в JS-земле.)
Последняя причина, по которой я могу придумать, - это совместимость с разными браузерами. Вы никогда не сможете нормализовать интерфейс событий для себя, если привязываете события в HTML.