JAVASCRIPT. Hilos. setInterval. clearInterval.
Bueno esto es una especie de "hilos" para javascript.
Siempre que usaba setInterval ó setTimeOut no sabía como finalizar su ejecución correctamente.
Al devolver la función setInterval un valor o identificador, lo recojo en una variable y así podemos parar la ejecución con clearInterval(hilo);
// declaramos el hilo
var hilo;
// ejecutamos el hilo
hilo=setInterval("llamadaAfuncion()",100);
// eliminamos el hilo
clearInterval(hilo);
EL siguiente código javascript lo utilicé para hacer aparecer poco a poco las imágenes y también para hacerlas desaparecer poco a poco.
En el ejemplo uso setInterval() y clearInterval().
Siempre que usaba setInterval ó setTimeOut no sabía como finalizar su ejecución correctamente.
Al devolver la función setInterval un valor o identificador, lo recojo en una variable y así podemos parar la ejecución con clearInterval(hilo);
// declaramos el hilo
var hilo;
// ejecutamos el hilo
hilo=setInterval("llamadaAfuncion()",100);
// eliminamos el hilo
clearInterval(hilo);
EL siguiente código javascript lo utilicé para hacer aparecer poco a poco las imágenes y también para hacerlas desaparecer poco a poco.
En el ejemplo uso setInterval() y clearInterval().
<script type="text/javascript">
var opacidad=0;
var hilo;
function mostrarImagen(id) {
clearInterval(hilo);
opacidad=0;
document.getElementById(id).style.opacity=".0";
document.getElementById(id).style.filter="alpha(opacity=0)";
hilo=setInterval("hacerOpaco('"+id+"')",50);
}
function ocultarImagen(id) {
clearInterval(hilo);
opacidad=100;
hilo=setInterval("hacerTransparente('"+id+"')",50);
}
function hacerOpaco( id ) {
opacidad++;
opacidadFireFox=opacidad/100;
document.getElementById(id).style.opacity=opacidadFireFox;
document.getElementById(id).style.filter="alpha(opacity="+opacidad+")";
if (opacidad>99) {
clearInterval(hilo);
document.getElementById(id).style.opacity="1";
document.getElementById(id).style.filter="alpha(opacity=100)";
return;
}
}
function hacerTransparente( id ) {
opacidad--;
opacidadFireFox=opacidad/100;
document.getElementById(id).style.opacity=opacidadFireFox;
document.getElementById(id).style.filter="alpha(opacity="+opacidad+")";
if (opacidad<1) {
clearInterval(hilo);
document.getElementById(id).style.opacity=".0";
document.getElementById(id).style.filter="alpha(opacity=0)";
return;
}
}
</script>
El problema que veo, y que en mi caso necesito resolver, es que manejas una sola variable para setInterval, por lo que si intentas hacer multiples transparencias al mismo tiempo, cortara el setInterval para todos, y no para cada una...
ResponderEliminarTe recomiendo uses un framework de javascript, antes yo solía tirar todas las líneas y crear toda la programación de javascript, y al final me encontraba con el típico problema de hacer compatible el código con todos los navegadores.
ResponderEliminarPasate a mootools o prototype, hay que adaptarse un poco a ellos, pero los desarrollos y el mantenimiento del código se hace más sencillo.
mootools
prototype
Espero te sirva de ayuda, echa un vistazo a las demos de mootools, de lo que buscas hay una demo en MooTools Demos Effects-Classes