Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

170
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda