Foros del Web » Programando para Internet » Javascript »

Reloj con cuenta progresiva

Estas en el tema de Reloj con cuenta progresiva en el foro de Javascript en Foros del Web. Hola a todos. Tengo un despiole en mi cabeza y no me sale lo que quiero hacer. Resulta que en una página cualquiera tengo un ...
  #1 (permalink)  
Antiguo 29/04/2003, 09:12
AeSePe1
Invitado
 
Mensajes: n/a
Puntos:
Script en JS

Hola a todos.
Tengo un despiole en mi cabeza y no me sale lo que quiero hacer.
Resulta que en una página cualquiera tengo un simple link que dice "Activar cuenta regresiva" (NO UN BOTÓN), cuando hago click sobre éste link, se activa una cuenta progresiva que tiene segudnos, minutos y hora.
Ahora, cuando la cuenta empieza desde cero, el link que antes decía "Activar cuenta....", tiene que cambiar por "Borrar cuenta", en donde si hago click, el contador vuelve a cero en espera de otra cuenta progresiva, ya que al clickear en "Borrar cuenta", tendría que aparecer denuevo el texto "Activar cuenta..."

¿Se puede hacer?????

Espero que me ayuden...
saludos
  #2 (permalink)  
Antiguo 29/04/2003, 09:21
 
Fecha de Ingreso: febrero-2003
Ubicación: Bogotá
Mensajes: 952
Antigüedad: 21 años, 2 meses
Puntos: 0
si lo puedes hacer,

debes darle un id al enlace por ejemplo:
<a href="#" id=up>agregar</a>

y luego en el script escribes:
up.innerHTML="borrar";

espero que eso sea lo que preguntes.

saludos
__________________
RedFutura
Alojamiento Web Profesional
www.redfutura.net
  #3 (permalink)  
Antiguo 29/04/2003, 17:36
AeSePe1
Invitado
 
Mensajes: n/a
Puntos:
Gracias por tu respuesta.
KLO que pasa es que me gustaría que me den el código completo ya que se muy poco JS.
  #4 (permalink)  
Antiguo 29/04/2003, 20:06
AeSePe1
Invitado
 
Mensajes: n/a
Puntos:
Reloj con cuenta progresiva.

Hola!!!
Resulta que tengo el siguiente código y le quiero agregar 3 opciones más.
- Que la cuenta progresiva no se active hasta que no se haga click en el botón "Empezar"
- Que exista un botón que permita parar la cuenta (congelarla) y otro que la pueda vovlver a cero. (también congelante, ya que se activará de nuevo si hago click en el botón "empezar").
- Que exista otro botón más que me permita ver en una ventana windows la cuenta congelada en el momento que hizo click sobre el botón, cuando cierro esta ventana, la cuenta sigue...

espero que me lo puedan hacer.
saludos.

Código PHP:
<script language="javascript" >
var 
minutero 0;
var 
segundero 0;
var 
horario 0;
var 
activo false;

function 
ajuste(n)    {
    var 
salida "";
    if (
10)    salida "0" ;
    else 
salida "" n;
    return 
salida;
}

function 
iniciaReloj()    {
    if (
activo) {alert("Fin cuenta"); location.reload()}
    
activo true;
    
document.digital.segundo.value ajuste(segundero);
    
document.digital.minuto.value ajuste(minutero);
    
document.digital.hora.value ajuste(horario);
    
setTimeout("ponSegundero()"1000);
}

function 
ponSegundero()    {
    if (++
segundero 59)    {
        
ponMinutero();
        
segundero 0;
    }
    
document.forms.digital.segundo.value ajuste(segundero);
    
setTimeout("ponSegundero()"1000);
}

function 
ponMinutero()    {
    if (++
minutero 59)    {
        
ponHora();
        
minutero 0;
    }
    
document.forms.digital.minuto.value ajuste(minutero);
}

function 
ponHora()    {
    if (++
horario 23)    horario 0;
    
document.forms.digital.hora.value ajuste(horario);
}
</script> 

Última edición por KarlanKas; 30/04/2003 a las 02:46
  #5 (permalink)  
Antiguo 30/04/2003, 03:25
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola AeSePe1:

Me suena de que ahí puse la mano...

En la página original, no sé si es la misma de esta página ... había un botón para iniciar la cuenta y con el mismo se detenía.

Lo que hay que hacer es separar esas acciones, pero un buen sistema, tendría que contemplar también inhabilitar los botones.

Bueno, me pongo y te digo algo luego...

Saludos
  #6 (permalink)  
Antiguo 30/04/2003, 03:49
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61

Hola AeSePe1!!

Prueba con esto a ver si te va:

[Ejemplo]
Código PHP:
<html>
<
head>
    <
title>Reloj</title>
    <
style>
    
form{font:normal 10px/15px verdana;}
    
input{border:solid 1px black;font:normal 10px/10px verdana}
    .
boton{width:100px;height:20px;}
    
    </
style>
    <
script language="javascript" >
var 
minutero 0;
var 
segundero 0;
var 
horario 0;
var 
activo false;
var 
pepe;
var 
parar3=false;
function 
ajuste(n)    {
    var 
salida "";
    if (
10)    salida "0" ;
    else 
salida "" n;
    return 
salida;
}

function 
iniciaReloj()    {
parar3=false;
document.digital.empezar.value="Reloj iniciado..."
document.digital.parar.value="Parar reloj"
document.digital.parar.disabled=false;
document.digital.empezar.disabled=true;

    if (
activo) {activo=false}
    
activo true;
    
document.digital.segundo.value ajuste(segundero);
    
document.digital.minuto.value ajuste(minutero);
    
document.digital.hora.value ajuste(horario);
    
setTimeout("ponSegundero()"1000);
}

function 
ponSegundero()    {
    if (++
segundero 59)    {
        
ponMinutero();
        
segundero 0;
    }
    
document.forms.digital.segundo.value ajuste(segundero);
    
pepe=setTimeout("ponSegundero()"1000);
}

function 
ponMinutero()    {
    if (++
minutero 59)    {
        
ponHora();
        
minutero 0;
    }
    
document.forms.digital.minuto.value ajuste(minutero);
}

function 
ponHora()    {
    if (++
horario 23)    horario 0;
    
document.forms.digital.hora.value ajuste(horario);
}

function 
parar2(){
if (
parar3){location.reload()}
else{
parar3=true
document
.digital.empezar.value="Continuar cuenta";
document.digital.parar.value="poner a cero";
document.digital.empezar.disabled=false;
clearTimeout(pepe)
if(
digital.confirmar.checked){
resultado=horario+":"+minutero+":"+segundero;
pepito=window.open("","","width=100,height=50");
pepito.document.write('<html><Head><title>Resultado</title></HEAD><body onbeforeunload="opener.document.digital.empezar.click()">'+resultado+'</body></html>');
pepito.focus();
}
}
}
</script>
</head>

<body >
<form action=""
      name="digital"
      id="digital">
      <input type="text"
             name="hora"
             size="2"
             maxlength="2"
             value="00">:
                   <input type="text"
             name="minuto"
             size="2"
             maxlength="2"
             value="00">:
                   <input type="text"
             name="segundo"
             size="2"
             maxlength="2"
             value="00">
      
    
<br>
<br>
<input class="boton" type="button" onclick="iniciaReloj()" name="empezar" value="Iniciar Reloj"><br><br>
<input class="boton"   type="button" onclick="parar2()" name="parar" disabled value="Parar Reloj"><br>
<input type="checkbox" style="border:none" name="confirmar"  value="3">Ver resultado en ventana aparte<br>

  </form></body>
</html> 
Hola caricatos!
¿No crees que sería todo mucho más limpio si pones el código en el post?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 30/04/2003 a las 04:16
  #7 (permalink)  
Antiguo 30/04/2003, 04:44
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
AeSePe1!!

No repitas posts por favor!!

Gracias!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #8 (permalink)  
Antiguo 30/04/2003, 05:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

He visto que te ha contestado KarlanKas (¡Hola! ), pero como ya estaba un poco liado, seguí con mi versión, y aquí la pongo:

Código PHP:
<html>
<
head>
<
script language="javascript" >
var 
minutero 0;
var 
segundero 0;
var 
horario 0;
var 
activo false;
var 
win false;

function 
ajuste(n)    {
    var 
salida "";
    if (
10)    salida "0" ;
    else 
salida "" n;
    return 
salida;
}

function 
iniciaReloj()    {
    if (
win) {win.close(); win false}
    
document.digital.empezar.disabled true;
    
document.digital.segundo.value ajuste(segundero);
    
document.digital.minuto.value ajuste(minutero);
    
document.digital.hora.value ajuste(horario);
    
document.digital.congelar.disabled false;
    
activo true;
    
setTimeout("ponSegundero()"1000);
}

function 
detieneReloj()    {
    
activo false;
    
document.digital.empezar.disabled false;
    
document.digital.congelar.disabled true;
}

function 
mostrando()    {
    if (
win)    {
        
win.close(); win false;
    }
    else    {
        
detieneReloj();
        var 
contenido "<html><body>";
        
contenido += document.forms.digital.hora.value ":" document.forms.digital.minuto.value ":" document.forms.digital.segundo.value "</body></html>";
        
win window.open("""""width=100,height=5");
        
win.document.write(contenido);
        
document.forms.digital.mostrar.value "ocultar";
    }
}

function 
ocultar()    {
    
win false;
    
document.forms.digital.mostrar.value "mostrar";
    
iniciaReloj();
}

function 
ponSegundero()    {
    if (++
segundero 59)    {
        
ponMinutero();
        
segundero 0;
    }
    
document.forms.digital.segundo.value ajuste(segundero);
    if (
activo)    setTimeout("ponSegundero()"1000);
}

function 
ponMinutero()    {
    if (++
minutero 59)    {
        
ponHora();
        
minutero 0;
    }
    
document.forms.digital.minuto.value ajuste(minutero);
}

function 
ponHora()    {
    if (++
horario 23)    horario 0;
    
document.forms.digital.hora.value ajuste(horario);
}

function 
inicio()    {
    
minutero 0;
    
segundero 0;
    
horario 0;
    
document.forms.digital.hora.value "00";
    
document.forms.digital.minuto.value "00";
    
document.forms.digital.segundo.value "00";
}
</script>

</head>
<body style="text-align: center">
<table style="text-align: center">
<form name=digital>
<tr>
<td>
<input type=text name=hora size=2 value="00" disabled style="border:0" >:
<input type=text name=minuto size=2 value="00" disabled style="border:0" >:
<input type=text name=segundo size=2 value="00" style="border:0" disabled>
</td>
</tr>
<tr>
<td colspan=3>
<input type=button name=empezar value="Empezar" onClick="iniciaReloj()">
<input type=button name=congelar value="Congelar" disabled onClick="detieneReloj()">
<input type=button name=mostrar value="mostrar" onClick="mostrando()">
<input type=button name=inicializar value="inicializar" onClick="inicio()">
</td>
</tr>
</table>
</form>
</body>
</html> 
Es bastante distinta, pero entre una y otra tal vez encuentres lo que realmente quieres.

KarlanKas: El enlace que puse, tiene exactamente el mismo código javascript que había planteado AeSePe1, y no creí conveniente replicar... ya sabes que he tomado nota de poner el código en los mensajes, aunque no estoy nada de acuerdo con dar las respuestas sin que tenga que trabajar algo quien pregunta... espero que me comprendas.

Saludos
  #9 (permalink)  
Antiguo 30/04/2003, 05:53
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Ah! OK! Me parece bien entonces...

Esta vez has dado una respuesta completita... jeje

Buscaba con mi respuesta que fuera como los cronómetros de casio: con sólo 2 botones... yo creo que por eso son distintos...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 30/04/2003, 07:02
AeSePe1
Invitado
 
Mensajes: n/a
Puntos:
MUCHAS GRACIAS KARLANKAS Y CARICATOS!!!!!
Ustedes sí que saber comprender a los humildes usuarios que recién empiezan con JavaScript.
Gracias por el tiempo dedicado a mi pregunta, son unos genios.
PD: Carlancas, el código que mandé en el primer mensaje me lo habías mandado vos...

saludos y suerte.
AeSePe1
  #11 (permalink)  
Antiguo 30/04/2003, 07:08
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Me alegro de que te sirva!

No recuerdo habertelo enviado... creo que fue caricatos, no?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #12 (permalink)  
Antiguo 30/04/2003, 07:19
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Coincido con KarlanKas en que lo envié yo... al menos lo tengo en mi directorio de pruebas, (aunque también usé el archiconocido método copy & paste, para meter códigos de otros... entre ellos cosas de KarlanKas)

Bueno lo importante es que te sirva.

Saludos
  #13 (permalink)  
Antiguo 30/04/2003, 07:41
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
:-O
Mis magníficos códigos!!!?

chico malooo....
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #14 (permalink)  
Antiguo 30/04/2003, 17:35
AeSePe1
Invitado
 
Mensajes: n/a
Puntos:
Otro problema....

Hola.
Espero no molestar mucho con mis mensajes.

Les quiero aviasar que el código me funcionó perféctamente, pero ahora se me presentó otro problema...

Resulta que quiero poner 8 veces el mismo script en una página html.
¿Existe otra forma más rápida y no tan cansadora de insertar 8 veces el mismo script sin tener que cambiar los nombres de las variables?

espero que me ayuden...
saludos.
  #15 (permalink)  
Antiguo 02/05/2003, 03:09
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

La verdad es que pides algo que me parece bastante complicado.

Tal vez puedas hacer una página normal y ponerle 8 iframes de la misma página del script.

Voy a hacer una pequeña prueba, y te cuento...

Saludos
  #16 (permalink)  
Antiguo 02/05/2003, 04:24
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Hice esas pruebas que te comentaba y da buenos resultados, aunque queda por trabajar...

En un principio se pueden poner varios iframes de esta manera:

Código PHP:
<iframe src=prueba45bis.html name=reloj1></iframe>
<
button onclick="reloj1.iniciaReloj()">Empezar</button>
<
button onclick="reloj1.mostrando()">Estado</button
Un problema es que los iframes dejan un borde, y para pasar valores desde el iframe, solo lo he logrado con funciones del "parent"... entonces pensé que se podrían usar unos parámetros en las funciones, y tener el iframe oculto

Seguiré con las pruebas...

Saludos
  #17 (permalink)  
Antiguo 02/05/2003, 15:43
AeSePe1
Invitado
 
Mensajes: n/a
Puntos:
Okey.
Cuando tengas los resultados me dices como hacer esos i-frames.
saludos,.
  #18 (permalink)  
Antiguo 02/05/2003, 18:11
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola...

Voy a poner primero el fichero de los iframes:

Código PHP:
<html>
<
head>
<
script language=javascript>
function 
poner(sitiodato)    {
    
document.getElementById(sitio).setAttribute("value"dato);
}

function 
cambiar(inifin)    {
var 
_ini document.getElementById(ini);
var 
_fin document.getElementById(fin);
_ini.disabled = (_ini.disabled == true) ? false true;
_fin.disabled = (_fin.disabled == true) ? false true;
}

</script>
</head>
<body style="text-align: center">
<iframe src=prueba45bis3.html name=reloj1 style="width:1; height:1; visibility: hidden"></iframe>
<input type=text size=2 id=h1 value="00" style="border: none">:
<input type=text size=2 id=m1 value="00" style="border: none">:
<input type=text size=2 id=s1 value="00" style="border: none"><br>
<button id=ini1 onclick="reloj1.iniciaReloj('h1', 'm1', 's1'); cambiar('ini1', 'fin1')">Empezar</button>
<button id=fin1 onclick="reloj1.detieneReloj(); cambiar('ini1', 'fin1')" disabled>Congelar</button>
<button onclick="reloj1.mostrando('h1', 'm1', 's1')">Estado</button>
<button onclick="reloj1.inicio('h1', 'm1', 's1')">Inicializar</button>
<br>

<iframe src=prueba45bis3.html name=reloj2 style="width:1; height:1; visibility: hidden"></iframe>
<input type=text size=2 id=h2 value="00" style="border: none">:
<input type=text size=2 id=m2 value="00" style="border: none">:
<input type=text size=2 id=s2 value="00" style="border: none">

<br>

<button id=ini2 onclick="reloj2.iniciaReloj('h2', 'm2', 's2'); cambiar('ini2', 'fin2')">Empezar</button>
<button id=fin2 onclick="reloj2.detieneReloj(); cambiar('ini2', 'fin2')" disabled>Congelar</button>
<button onclick="reloj2.mostrando('h2', 'm2', 's2')">Estado</button>
<button onclick="reloj2.inicio('h2', 'm2', 's2')">Inicializar</button>


</body>
</html> 
Fíjate que los rejojes están separados por el tag br, y que son cosas iguales, donde solo tienes que cambiar el número ...
en este caso el primero tiene todo a 1, y el segundo a 2...

Y ahora pongo el iframe (ponle los nombres que a ti te parazca mejor...

Código PHP:
<html>
<
head>
<
script language="javascript" >
var 
minutero 0;
var 
segundero 0;
var 
horario 0;
var 
activo false;
var 
win false;

function 
ajuste(n)    {
    var 
salida "";
    if (
10)    salida "0" ;
    else 
salida "" n;
    return 
salida;
}

function 
iniciaReloj(hms)    {
    if (
win) {win.close(); win false}
    
parent.poner(sajuste(segundero));
    
parent.poner(majuste(minutero));
    
parent.poner(hajuste(horario));
    
activo true;
    var 
empezar "ponSegundero('" "', '" "', '" "')";
    
setTimeout(empezar1000);
}

function 
detieneReloj()    {
    
activo false;
}

function 
mostrando(hms)    {
    if (
win)    {
        
win.close(); win falseiniciaReloj(hms);
    }
    else    {
        
detieneReloj();
        var 
contenido "<html><body>";
        
contenido += ajuste(horario) + ":" ajuste(minutero) + ":" ajuste(segundero) + "</body></html>";
        
win window.open("""""width=100,height=5");
        
win.document.write(contenido);
    }
}

function 
ponSegundero(hms)    {
    if (
activo)    {
        if (++
segundero 59)    {
            
ponMinutero(hm);
            
segundero 0;
        }
        
parent.poner(sajuste(segundero));
        var 
seg "ponSegundero('" "', '" "', '" "')";
        
setTimeout(seg1000);
    }
}

function 
ponMinutero(hm)    {
    if (++
minutero 59)    {
        
ponHora(h);
        
minutero 0;
    }
    
parent.poner(majuste(minutero));
}

function 
ponHora(h)    {
    if (++
horario 23)    horario 0;
    
parent.poner(hajuste(horario));
}

function 
inicio(hms)    {
    
minutero 0;
    
segundero 0;
    
horario 0;
    
parent.poner(h"00");
    
parent.poner(m"00");
    
parent.poner(s"00");
}
</script>

</head>
<body style="text-align: center"></body>
</html> 
Pruébalo y si no entiendes algo, te lo explicaré.

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:31.