Necesito "animar" una variable con jquery.jquery "animar" valor variable
Ejemplo: El valor de la variable es 1. El valor debe ser de 10 después de 5 segundos. Debe aumentar "sin problemas".
Espero que sepas a qué me refiero.
¡Gracias!
Necesito "animar" una variable con jquery.jquery "animar" valor variable
Ejemplo: El valor de la variable es 1. El valor debe ser de 10 después de 5 segundos. Debe aumentar "sin problemas".
Espero que sepas a qué me refiero.
¡Gracias!
Lo que se necesita es el parámetro de paso en elfunción.
var a = 1;
jQuery('#dummy').animate({ /* animate dummy value */},{
duration: 5000,
step: function(now,fx){
a = 1 + ((now/100)*9);
}
});
La solución está bien. El problema es que es muy lento. – Eru
@Ties +1 Funciona, pero realmente no es necesario vincular la animación a un elemento HTML ficticio. Ver mi respuesta en http://stackoverflow.com/a/9324325/607874 –
@JoseRuiSantos Sé que la respuesta que Sudhir dio es probablemente la mejor respuesta. – Ties
Uso setInterval:
percentage = 0;
startValue = 1;
finishValue = 5;
currentValue = 1;
interval = setInterval(function(){
percentage ++;
currentValue = startValue + ((finishValue - startValue) * percentage)/100;
doSomething(currentValue);
if (percentage == 100) clearInterval(interval);
}, duration/100)
function doSomething(val) { /*process value*/}
var blub = 1;
setTimeout(function() {
blub = 10;
}, 5000);
¡Ahahahhahahahhahahahha, eso es tan divertido! +1 – super
incremento con setTimeout
x = 1
for(i=0;i<1000;i+=100){
setTimeout(function(){
console.log(x++)
},i)
}
Esto debería funcionar para usted:
var a = 1;
var b = setInterval(function() {
console.log(a);
a++;
if (a == 10) { clearInterval(b); }
}, 500);
marca HTML como
HTML
<span id="changeNumber">1</span>
Puede cambiar su valor después de 5 segundos.
JQuery:
setInterval(function() {
$('#changeNumber').text('10');
},5000);
He aquí una demostración http://jsfiddle.net/Simplybj/Fbhs9/
intento:
$({someValue: 0}).animate({someValue: 10}, {
duration: 5000,
step: function() {
$('#el').text(Math.ceil(this.someValue));
}
});
<div id="el"></div>
bueno, no sabía que pudieras hacerlo de esta manera, sabía acerca de la función de paso (como puedes ver en mi respuesta) ¡pero esto es bueno! elimina el 'Math.ceil' y estás dorado :) – Ties
@Ties Math.ceil se usa en este caso para que se redondee al valor superior, de lo contrario obtendrías 9.99858544, etc. –
sí, pero pierdes la suavidad , puede agregar un parámetro 'completo' para terminarlo – Ties
var snail = {speed:0};
$(snail).animate({speed: 10}, 5000);
Como complemento a la respuesta de lazos, no es necesario agregar un elemento ficticio al DOM. Lo hago así:
$.fn.animateValueTo = function (value) {
var that = this;
$('<span>')
.css('display', 'none')
.css('letter-spacing', parseInt(that.text()))
.animate({ letterSpacing: value }, {
duration: 1000,
step: function (i) {
that.text(parseInt(i));
}
});
return this;
};
¿Desea seguir incrementando esta variable después de un tiempo fijo? – Sibu
Debe aumentar "sin problemas". Me olvidé de decirlo ... – Marv
Tienes una solución elegante aquí http://stackoverflow.com/a/9324325/607874 –