I have some problems targeting dynamically created elements with JavaScript.
Problem 1
Shortened JavaScript code:
var lightbox = document.createElement('div'), nav = document.createElement("nav"), imga = document.querySelectorAll(".gallery a"); for (i = 0; i < imga.length; i++) { imga[i].addEventListener("click", function() { document.body.insertBefore(lightbox, document.body.firstChild); lightbox.appendChild(nav); }); }
1: Now I want to make an event on my <nav> . How to get an event to target #lightbox nav a instead of #lightbox nav ?
nav.addEventListener("click", function() {
I have tried many things, for example:
var selector = document.querySelectorAll("nav a"); for (i = 0; i < selector.length; i++) { selector[i].addEventListener("click", function() {
And this:
var selector = nav.getElementsByTagName("a"); for (i = 0; i < selector.length; i++) { selector[i].addEventListener("click", function() {
Problem 2
Shortened JavaScript code:
var img, imga = document.querySelectorAll(".gallery a"); for (i = 0; i < imga.length; i++) { imga[i].addEventListener("click", function() { for (i = 0; i < imga.length; i++) { img = document.createElement("img"); lightbox.appendChild(img); } }); }
2: How to add an event to dynamically generated #lightbox img ? img = document.createElement("img") must be inside the function to add multiple images, and for this reason I cannot do this (for example, currently on <nav> ):
img.addEventListener("click", function() {
Can someone please help me with this? I am not very good at JavaScript.