Если вы хотите избежать использования атрибута HTML onclick
, вы можете назначить прослушиватель событий новым элементам, которые генерируются в вашем коде.Если вы используете способность JavaScript создавать элементы (вместо вставки HTML в виде строки), вы можете захватить ссылку на новый элемент, как вы могли бы с элементами HTML, которые существовали за пределами JS.
const data = ['one', 'two', 'three', 'four', 'five', 'six'];
const target = document.getElementById('output');
data.forEach( d =>{
let div = document.createElement('div');
let btn = document.createElement('button');
let txt = document.createTextNode( d );
btn.addEventListener('click', function(){
alert( d );
});
btn.appendChild( txt );
div.appendChild( btn );
target.appendChild( div );
});
<div id="output"><div>
По моему честному мнению, нет ничего плохого в использовании onclick
в ваших HTML-элементах.Пока ваш код (1) выполняется должным образом, (2) легко читается, и (3) могут поддерживаться другими - тогда то, «как» вы достигаете своей цели, не является сверхкритическим.
Я считаю, что идея отходить от onclick
состоит в том, чтобы отделить приоритеты (структуру в HTML, логику в JS, ...), но в своем примере вы генерируете свою структуру в JS:) Итак, у вас уже есть логика кликов в вашем коде JS.