<div class = "ad-container"></div>
<script>
let html = '';
function createAd() {
const adBoxElement = document.querySelector('.ad-box');
const closeButtonElement = document.querySelector('.close-button');
const adContainerElement = document.querySelector('.ad-container');
let localHtml =
`
<div class="ad-box">
<div class="close-button">X</div>
<div class="ad-text">Google Ads</div>
</div>
`;
html += localHtml;
adContainerElement.innerHTML = html;
closeButtonElement.addEventListener('click', () => adBoxElement.remove());
}
setTimeout(createAd, 2000);
</script>
Olá, sou novo em Javascript. Quero criar algo como um anúncio que aparece depois de dois segundos e depois desaparece ao clicar no botão X. Funciona quando chamo uma função para criar o anúncio, mas por que não funciona com setTimeOut()
?
Parece que o problema é que você está definindo as constantes
adBoxElement
,closeButtonElement
antes que os elementos correspondentes existam na página, portanto, eles ficarão indefinidos e seu código subsequente para removê-los não funcionará.Mova essas
const
definições para depois daadContainerElement.innerHTML =
linha e acho que você terá alguma sorte.Não esqueça que você pode usar o console dev na maioria dos navegadores. Coloque uma
debugger;
linha na suacreateAd()
função, aperte F12, recarregue a página e então use as ferramentas de depuração para percorrer seu código e inspecionar o valor das constantes conforme você avança.