I am trying to add events dynamically to each element in my html, using data-* I get all elements and using forEach to iterate. But when I trigger events in any button, it returns in page the undefined value, it looks like it's lost the reference from this inside function, I really don't know what happened. Is the best approach to add events dynamically?
https://jsfiddle.net/tmmdsgoq/1/
<button data-event data-text="Button 1">Button 1</button>
<button data-event data-text="Button 2">Button 2</button>
<button data-event data-text="Button 3">Button 3</button>
<div id="container">
</div>
<script>
function init(){
var elements = document.querySelectorAll("[data-event]");
elements.forEach(function(el){
el.addEventListener("click", function(){
document.querySelector("#container").innerHTML += this.text;
});
});
}
init();
</script>