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

172
Visualizações
El número no se incrementa en 1 en JavaScript

Tengo este código en el que si la opacidad es menor o igual a 0, se supone que el número del mensaje aumenta en 1, pero cuando ejecuto el código, el número del mensaje aumenta en 77 o 152 o 66, etc. ¿Podría ayudarme? ¿yo? Mi código:

 //variables var x = 0; var opacity = 0; var messageNumber = 0; var talk1 = ["hello", "welcome to idle ball", "potato"]; var lol = 1; //set opacity to 1 function opacitySet1(speed) { document.getElementById("talk").style.opacity = opacity; opacity += speed; } //set opacity to 0 function opacitySet0(speed) { document.getElementById("talk").style.opacity = opacity; opacity -= speed; } function IntervalManager(flag, animate, time, para1) { if (flag) { var intervalSet = setTimeout(animate, time, para1) } } function IntervalManagerII(flag, animate, time, para1) { if (flag) { var intervalSetII = setTimeout(animate, time, para1) } } //to delay time function nothing() {} function message(startPart) { document.getElementById("talk").innerHTML = messageNumber; if (opacity >= 0 && lol == 0) { setTimeout(nothing, 1); IntervalManagerII(true, opacitySet0, 300, 0.005); IntervalManager(false) } if (opacity <= 1 && lol == 1) { IntervalManager(true, opacitySet1, 300, 0.005); IntervalManagerII(false) } if (opacity <= 0) { lol = 1; IntervalManagerII(false); messageNumber += 1; } //this is the part that is not working if (opacity >= 1) { lol = 0; IntervalManager(false); } }; setInterval(function() { message(0) });

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

0

Nueva respuesta

Después de discutir en los comentarios, resulta que crees que los temporizadores de JavaScript están bloqueando la ejecución del hilo principal. No funciona de esta manera. Considere el siguiente ejemplo ( 2 se imprime casi instantáneamente y 1 se imprime después de un segundo).

 > | setTimeout(function(){console.log(1)}, 1000); | setTimeout(function(){console.log(2)}, 0); < | ... | 2 | 1

Lea también este artículo del creador de jQuery.

Dado que su código se basa en una suposición incorrecta, creo que no tiene sentido seguir trabajando en su pregunta.


respuesta antigua

Su temporizador setInterval se ejecuta mucho más rápido que sus temporizadores setTimeout , lo que significa que pone en cola muchos temporizadores setTimeout antes de comenzar a incrementar la opacidad. Durante este tiempo, el mensaje se incrementa y se imprime a la velocidad máxima del intervalo. Después de un par de ms, todos los temporizadores setTimeout comienzan a dispararse uno tras otro casi sin demora entre ellos, y se intercalan con los temporizadores setInterval , lo que conduce a un desorden (casi) impredecible.

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