Ваш код имеет несколько проблем с ним.
- Что такое свойство
set
? - Ваш setTimeout будет выполняться почти каждый раз.
- Вам нужно использовать целый второй setTimeout и проверить текущий цикл, если совпадает
n
, тогда вы отображаете кнопку закрытия.
Я немного переработал ваш код и должен выглядеть примерно так:
let n = 3;
let c = 0; // counter
const hideAll = () => {
hide(document.getElementById('texto'));
hide(document.getElementById('bro'));
hide(document.getElementById('block'));
}
const show = (el) => el.classList.remove('hidden');
const hide = (el) => el.classList.add('hidden');
const showPopup = () => {
show(document.getElementById('block'));
startCountingDown();
}
const startCountingDown = () => setTimeout( countdown, 1000 );
const countdown = () => {
if(c < n) {
c++;
let texto = document.getElementById('texto');
texto.innerHTML = c.toString();
show(texto);
startCountingDown();
} else {
show(document.getElementById('bro'));
}
}
showPopup();
.hidden { display: none; }
#bro {
position: absolute;
left: 50px;
top: 150px;
/*visibility: hidden;*/
justify-content: center;
z-index: 3;
font-size: 20px;
}
#texto {
position: absolute;
justify-content: center;
transition: none;
background-color: inherit;
padding: inherit;
z-index: 3;
color: red;
font-size: 50px;
margin-left: 40px;
margin-top: 25px;
}
aside {
position: absolute;
justify-content: center;
width: 100px;
height: 100px;
background-color: blue;
border-radius: 30px;
z-index: 2;
}
<p id="texto" class="hidden">1</p>
<button id="bro" onclick="hideAll()" class="hidden">close</button>
<aside name="block" id="block" class="hidden"></aside>
Я изменил размеры ваших элементов, чтобы они соответствовали этой странице.Я также создал класс .hidden, который вы можете добавлять или удалять, чтобы показывать и скрывать свои элементы.Я считаю, что это хороший подход для начала.
Надеюсь, это поможет