Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

297
Visualizações
Pause / re-initiate progressbar? Javascript and animationPlayState

I got myself a simple script that creates a progressbar which runs for 180 seconds. After that time the progressbar sends the browser to another website. View / run the code below. I added an onclick event to the progress bar for testing purposes. What I want; I want to be able to pause, reset and set a new running-time value. I tried using document.getElementById('progressbar1').style.animationPlayState = 'paused'; to pause the progressbar, but unfortunately nothing is happening. Do you guys have any clue on how to pause the progressbar?

function createProgressbar(id, duration, callback) {
  var progressbar = document.getElementById(id);
  progressbar.className = 'progressbar';
  var progressbarinner = document.createElement('div');
  progressbarinner.className = 'inner';
  progressbarinner.style.animationDuration = duration;
  if (typeof(callback) === 'function') {
    progressbarinner.addEventListener('animationend', callback);
  }
  progressbar.appendChild(progressbarinner);
  progressbarinner.style.animationPlayState = 'running';
}

addEventListener('load', function() {
  createProgressbar('progressbar1', '180s', function() {
    window.location.replace("gotomypage.html");
    
  });
  
document.getElementById('progressbar1').addEventListener("click", function() {
      console.log ('TEST - Stop Progressbar');
      document.getElementById('progressbar1').style.animationPlayState = 'paused';
  });

});
.progressbar {
  width: 500px;
  margin: 25px auto;
  border: solid 1px #000;
  position: absolute;
  right:25%;
  left:50%;
  margin-left:-250px;  
}
.progressbar .inner {
  height: 15px;
  animation: progressbar-countdown;
  animation-duration: 40s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  animation-play-state: paused;
  animation-timing-function: linear;
}
@keyframes progressbar-countdown {
  0% {
    width: 100%;
    background: #0F0;
  }
  100% {
    width: 0%;
    background: #F00;
  }
}       
<div id="progressbar1"></div>

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

You are selecting the wrong element to stop the animation! The animation is running on #progressbar1 .inner

function createProgressbar(id, duration, callback) {
  var progressbar = document.getElementById(id);
  progressbar.className = 'progressbar';
  var progressbarinner = document.createElement('div');
  progressbarinner.className = 'inner';
  progressbarinner.style.animationDuration = duration;
  if (typeof(callback) === 'function') {
    progressbarinner.addEventListener('animationend', callback);
  }
  progressbar.appendChild(progressbarinner);
  progressbarinner.style.animationPlayState = 'running';
}

addEventListener('load', function() {
  createProgressbar('progressbar1', '180s', function() {
    window.location.replace("gotomypage.html");
    
  });
  
document.getElementById('progressbar1').addEventListener("click", function() {
      console.log ('TEST - Stop Progressbar');
      document.getElementById('progressbar1').getElementsByClassName('inner')[0].style.animationPlayState = 'paused';
  });

});
.progressbar {
  width: 500px;
  margin: 25px auto;
  border: solid 1px #000;
  position: absolute;
  right:25%;
  left:50%;
  margin-left:-250px;  
}
.progressbar .inner {
  height: 15px;
  animation: progressbar-countdown;
  animation-duration: 40s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  animation-play-state: paused;
  animation-timing-function: linear;
}
@keyframes progressbar-countdown {
  0% {
    width: 100%;
    background: #0F0;
  }
  100% {
    width: 0%;
    background: #F00;
  }
}
<div id="progressbar1"></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda