const docs = [{
id: "FgrbV2NTp72ie6xj",
name: "Joe"
}, {
id: "agfadsfasdfq23",
name: "Fred"
}];
let d = document;
d.g = d.getElementById;
let res = d.g('result');
let fragment = new DocumentFragment();
let el = null;
docs.forEach(function(item) {
el = document.createElement('li');
el.innerText = `${item.name}`;
el.onclick = function(){
alert(`${item.id}` + " Inserted");
};
fragment.appendChild(el);
});
res.appendChild(fragment);
ul{
cursor:default;
}
<ul id="result"></ul>
Хотя innerHTML
прост в использовании, по словам участника дискуссии здесь :
... в общем случае .innerHTML предназначен для вставки и анализа в документ небольших фрагментов HTML.
Таким образом, вместо решения запроса OP относительно innerHTML
, этоРешение намеренно избегает этого, используя манипуляции с DOM, и в то же время делает желаемую функцию доступной в качестве обработчика для события onclick элемента
.Для этого в коде создается
объект фрагмента документа .В результате код может добавлять элементы LI, а также идентификатор каждого из них и устанавливать свойство события onclick для каждого в функции, вызываемой
docs.forEach()
.Кроме того, я добавил немного CSS для улучшения курсора, когда пользователь нажимает «Джо» или «Фред».