I'm learning to generate and remove one image at a time using DOM and I'm unable to understand this error. It works fine till I add the if statement. I've look thru similar post on stack overflow but still can't grasp it. My code as follows:
HTML
<div id="imageContainer"> <!-- <img src="/image/bananas.jpg"> --> </div> Javascript
let images = [ { image_name: 'bananas.jpg', number_of_items: 6, }, { image_name: 'birthday candles.jpg', number_of_items: 7, }, { image_name: 'blocks.jpg', number_of_items: 6, }, { image_name: 'brushes.jpg', number_of_items: 7, }] let generate = () => { let randomNum = Math.floor(Math.random() * images.length); let imageGenerated = images[randomNum].image_name; let imageContainer = document.getElementById("imageContainer"); if (imageContainer.hasChildNodes()) { imageContainer.removeChild(imageContainer.firstElementChild); } let img = document.createElement("img"); img.src = "image/" + imageGenerated; imageContainer.appendChild(img); }; let timer = () => { setInterval(generate, 3000); };
hasChildNodesreturnstrueiff the parent haschildNodes, not iff it haschildren. You’re attempting to remove thefirstElementChild, which may not exist (whereas thefirstChilddoes).