Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/06/2012, 02:38
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
contador/arriba abajo con loop

Estoy peleando con esto y decididamente me bloquee, asi que corto por lo sano y pregunto a los expertos.
La idea es la siguiente, crear un contador/timer que vaya de 0 a 1 y de 1 a 0, en forma indefinida, utilizando como intervalo el valor 0.1, es decir tendria que ir haciendo
0
0.1
0.2
0.3
...
0.9
1
comenzar a decrecer
0.9
0.8
...
0.2
0.1
0

y ahi de vuelta para arriba, el tiempo no importa, pueden ser 500ms, 1000ms ó 2000, la cosa es que se repita el ciclo

Hice las mil y un variantes, pero siempre fallaba algo, de los mejores resultados les paso este

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. var i = 0;
  9. var e = "";
  10. var sint;
  11. var sint2;
  12. var z = 9;
  13. function sube(){
  14. if(i == 10){
  15. document.getElementById("timer").innerHTML=1;
  16. e = i;
  17. corre();
  18. }else{
  19. document.getElementById("timer").innerHTML='0.'+i;
  20. i++;
  21. }
  22. }
  23.  
  24. function baja(){
  25. if(z == 0){
  26. document.getElementById("timer").innerHTML=0;
  27. e = '';
  28. corre();
  29. }else{
  30. document.getElementById("timer").innerHTML='0.'+z;
  31. z--;
  32. }
  33. }
  34.  
  35. function corre(){
  36. if(e != ''){
  37. clearInterval(sint);
  38. sint2=setInterval("baja()",1000);
  39. }else{
  40. if(i < 11){
  41. clearInterval(sint2);
  42. sint=setInterval("sube()",1000);
  43. }
  44. }
  45. }
  46. window.onload = corre;
  47.  
  48. //]]>
  49. </head>
  50. <span id="timer"></span>
  51. </body>
  52. </html>

cuando se ejecuta, empieza en 0, llega al 1, baja al 0....pero, ahi emppieza a alternar entre 0 y 1, de lo que se deduce que lo que la script hace en ese punto es alternar entre
document.getElementById("timer").innerHTML=1;
y
document.getElementById("timer").innerHTML=0;

lo que indica que los clearInterval no estarían funcionando y que las funciones sube() y baja() siguen ejecutándose con los valores de z e i clavados en 0 y 10 respectivamente.
A lo mejor con un pequeño toque (pequeño para quién sepa hacerlo) se corrije, o a lo mejor tomé el camino equivocado y hay que hacer otra cosa.
Como la criatura me superó, espero que algún padrino, se haga cargo
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.