JavaScript - temporizador que no pare al refrescar la web

 
Vista:
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 19/02/2021 22:50:04
tengo este código de temporizador que cuenta segundo a segundo pero al refrescar empieza de nuevo, como puedo hacer que siga aunque refresque la web ? gracias de antemano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script>
class Temporizador {
    constructor() {
        this.tiempo = 0;
    }
 
    getTime() {
        return this.tiempo;
    }
 
    init() {
        setInterval(() => {
            this.tiempo++;
            document.getElementById('countdown').innerHTML = this.tiempo;
        },1000);
    }
}
 
var temporizador = new Temporizador();
temporizador.init();
 
</script>
 
<div id="countdown">0</div>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 19/02/2021 23:28:20
En este ejemplo es más sencillo y utilizamos onload para activar cuando carge la página,
Cómo podemos hacer para que no deje de aumentar los segundos aún refrescando la página

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYE html>
<html>
<head>
	<script >
 
	var cronometro;
 
	function carga()
	{
		contador_s =0;
 
		s = document.getElementById("segundos");
 
 
		cronometro = setInterval(
			function(){
 
				s.innerHTML = contador_s;
				contador_s++;
 
			}
			,1000);
 
	}
 
	</script>
 
 
</head>
<body onload="carga()">
	<p>
		<span id="segundos">0</span>
	</p>
 
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 20/02/2021 15:12:56
Hola Joel,

Si, lo encontré después de poner este tema y escribí preguntando si hay posibilidad de que el cronómetro no pare una vez se inicie, refiero a que dá igual desde el dispositivo o lugar donde accedas a la web, que el cronómetro siemrpe esté en funcionamiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 24/02/2021 00:42:55
Hola, muchas gracias Xavi.

Tiene buena pinta aunque todavía no he sido capaz de probarlo

He subido al servidor el archivo html del código que muestras y el php bajo el nombre x.php también hora.txt
Dentro de hora.txt he escrito : 0:00:00:00

Al probarlo sólo veo el botón de reiniciar cronometro , por qué no me muestra el cronómetro ?

En cuanto a Ajax, nunca lo he utilizado y no entiendo bien a que te refieres, que me falta o que hago mal ?


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xavi
Val: 1.807
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Xavi (68 intervenciones) el 24/02/2021 08:19:35
Revisa la consola del navegador, ahi seguramente veras el error...

Te recomiendo que primero lo pruebes tal cual, sin separar nada.
El archivo hora.txt, tiene que tener la hora de cuando empieza el cronometro. Con el boton que te muestra, se actualiza.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 24/02/2021 09:17:49
Entendido,he pegado todo el códio en el mismo archivo html

ESTO ME MUESTRA
ej3


EL ARCHIVO TXT PUSE COMO EJEMPLO ESTO
ej
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xavi
Val: 1.807
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Xavi (68 intervenciones) el 24/02/2021 10:35:40
Hola xra, al ver tu código me he dado cuenta de que tenia un pequeño error en la linea 98, que hacia referencia al archivo x.php... ya lo he corregido en el codigo.

Lo que has puesto en el archivo de texto no es la fecha inicial del cronometro... que fecha es esa?... con el botón "reiniciar cronometro" veras el formato que necesita. Te recomiendo eliminar el archivo hora.txt y al arrancar la pagina php lo creara con la fecha correcta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 24/02/2021 22:58:43
- Funciona perfectamente Xavi, gracias.

- Me pregunto si se cae el servidor en algún momento, hay que reiniciar el cronómetro? o será capaz de seguir ?

- Lo que me gustaría ahora es coger una hora del cronómetro para activar una acción. Ejemplo:
if 0:12:00:00 then document.write ("hola") /* sé que está fatal escrito pero es para que me entiendas */
es posible verdad ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Xavi
Val: 1.807
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Xavi (68 intervenciones) el 25/02/2021 07:46:50
Si, si, aunque se caiga el servidor seguira funcionando si existe el archivo hora.txt

El condicional lo puedes hacer, pero el milisegundos o segundos... ya que la diferencia (DateDiff) te la da en milisegundos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 25/02/2021 08:59:47
Genial que se siga , entiendo, ya que va a hacer la diferencia entre fecha servidor y actual... interesante


Te refieres a que no podría hacerlo por días horas ? Necesito que pueda coger días, muy importante.
Se escribiría algo así?
if (datediff == 2 : 10 : 00 : 00)
document.write ("hola")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Gio (79 intervenciones) el 02/03/2021 05:14:04
Tenés que hacer uso de la "local storage" para almacenar el punto de partida de tu temporizador, y así cada vez que se actualice o abras la página, tu código calculará el tiempo transcurrido desde ese punto de partida.

El código quedaría así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<div id="countdown">0</div>
<button id="reiniciar">Reiniciar temporisador</button>
 
 
 
<script>
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime() {
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
    }
 
    init() {
		document.getElementById('countdown').innerHTML = this.getTime();
 
		setTimeout(() => {
			setInterval(() => {
				document.getElementById('countdown').innerHTML = this.getTime();
			},1000);
		}, this.extra);
 
    }
}
 
//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
var temporizador = new Temporizador();
 
//SE INICIALIZA EL TEMPORIZADOR
temporizador.init();
 
//FUNCION QUE RESTABLECE EL CRONOMETRO
function restablecer(){
	temporizador.reiniciar();
}
 
//SE DETECTA UN CLICK EN EL BOTON QUE REINICIA EL CRONOMETRO
document.getElementById("reiniciar").onclick=restablecer;
 
</script>

Notas:
Agregué un boton para reiniciar el temporizador.
El temporizador es completamente preciso.
Puedes abrir este archivo en varias ventanas a la vez y todas estarán conectadas entre si (actuaran a la misma vez).
El temporizador continua contando mientras tu computadora esta apagada.

Espero que esto sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 02/03/2021 22:39:17
Hola Gio, muchas gracias por el aporte.

Y si queremos que en el segundo 5 nos diga "hola" en el html y se quede la palabra "hola" hasta que en el segundo 20 y que al llegar el segundo 20 cambie la palabra y ponga "adios" ? se puede hacer ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 03/03/2021 15:16:18
Alguien me puede decir si mi propuesta es viable y como se puede hacer, por favor? Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por joel (895 intervenciones) el 03/03/2021 16:05:35
Hola xra, si que es viable, y lo puedes hacer de muchas maneras, dependiendo de tu código html.

Son preguntas muy básica de js... te recomendaría te leyeras un manual básico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 03/03/2021 16:21:21
Lo he intentado de diferentes maneras y no lo consigo, una ayuda por favor. Gracias
Hice alguna prueba como la de debajo por ejemplo pero no consigo lo que quiero , hasta dudo si this.getTime() es lo que debo utilizar.... y lo he colocado en diferentes partes para ver como actuaba pero no consigo.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<div id="countdown">0</div>
<button id="reiniciar">Reiniciar temporisador</button>
 
 
 
<script>
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime() {
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
 
    }
 
    init() {
		document.getElementById('countdown').innerHTML = this.getTime();
 
		setTimeout(() => {
			setInterval(() => {
				document.getElementById('countdown').innerHTML = this.getTime();
 
			},1000);
 
		}, this.extra);
 
if (this.getTime()>=3) {
 document.write ("1 dia");
}
 
    }
 
}
 
 
 
//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
var temporizador = new Temporizador();
 
//SE INICIALIZA EL TEMPORIZADOR
temporizador.init();
 
//FUNCION QUE RESTABLECE EL CRONOMETRO
function restablecer(){
	temporizador.reiniciar();
}
 
//SE DETECTA UN CLICK EN EL BOTON QUE REINICIA EL CRONOMETRO
document.getElementById("reiniciar").onclick=restablecer;
 
</script>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Gio (79 intervenciones) el 03/03/2021 21:28:39
A ver que te parece este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<div id="countdown">0</div>
<div id="mensaje"></div>
<hr>
 
<h2>Lista de recordatorios:</h2>
<div id="lista"></div>
<button id="actualizar">Actualizar</button><br><br>
 
<h2>Agregar recordatorio:</h2>
Mensaje: <input type="text" id="agregarMensaje"><br>
Tiempo: <input type="number" id="agregarTiempo"><br>
<button id="agregar">Agregar</button><br><br>
 
<h2>Quitar recordatorio:</h2>
No es necesario colocar los 2 datos, con uno es suficiente.<br>
Mensaje: <input type="text" id="quitarMensaje"><br>
Tiempo: <input type="number" id="quitarTiempo"><br>
<button id="quitar">Quitar</button><br><br>
 
<h2>Eliminar todos los recordatorios:</h2>
<button id="quitarTodo">Limpiar</button><br><br>
 
<h2>Reiniciar temporizador:</h2>
<button id="reiniciar">Reiniciar</button>
 
 
 
<script>
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime(){
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
    }
 
	crearRecordatorio(msg, s){
		this.x = localStorage.getItem("recordatorio");
		if(this.x == null || this.x == ""){
			localStorage.setItem("recordatorio", (s + ";" + msg));
		} else {
			localStorage.setItem("recordatorio", (this.x + ";" + s + ";" + msg));
		}
	}
 
	eliminarRecordatorio(inp){
		this.x3 = this.recordatorio();
		this.res="";
		this.r=false;
 
		if(Number.isInteger(inp)){
			for(var i = 0; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i]+";"+this.x3[i+1];
				}
			}
		} else {
			for(var i = 1; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i-1]+";"+this.x3[i];
				}
			}
		}
		localStorage.setItem("recordatorio", this.res);
	}
 
	limpiarRecordatorio(){
		localStorage.removeItem("recordatorio");
	}
 
	recordatorio(){
		this.x4 = localStorage.getItem("recordatorio");
		if(this.x4 != null){
			return this.x4.split(";");
		} else {
			return false;
		}
	}
 
	reordenarRecordatorio(){
		this.x2=this.recordatorio();
		this.l=this.x2.length;
		this.ram=Array();
 
		for(var i=this.l/2-1; i>0; i--){
			for(var i2=0; i2<(i*2+1); i2+=2){
				if(parseInt(this.x2[i2]) > parseInt(this.x2[i2+2])){
					this.ram[0]=this.x2[i2];
					this.ram[1]=this.x2[i2+1];
 
					this.x2[i2]=this.x2[i2+2];
					this.x2[i2+1]=this.x2[i2+3];
 
					this.x2[i2+2]=this.ram[0];
					this.x2[i2+3]=this.ram[1];
					console.log(this.x2[i2]+";"+this.x2[i2+1]+";"+this.x2[i2+2]+";"+this.x2[i2+3]);
				}
			}
		}
 
		this.limpiarRecordatorio();
		for(var i=0; i<this.l; i+=2){
			this.crearRecordatorio(this.x2[i+1], this.x2[i]);
		}
	}
 
    init() {
		document.getElementById('countdown').innerHTML = this.getTime();
 
		setTimeout(() => {
			setInterval(() => {
				document.getElementById('countdown').innerHTML = this.getTime();
				this.x5=this.recordatorio();
				this.ok=false;
 
				if(this.x5){
					for(var i = 0; i < this.x5.length; i+=2){
						if(this.getTime() >= this.x5[i]){
							document.getElementById('mensaje').innerHTML = this.x5[i+1];
							this.ok=true;
						}
					}
				}
 
				if(!this.ok){
					document.getElementById('mensaje').innerHTML = "Nada";
				}
			},1000);
		}, this.extra);
 
    }
}
 
//SE PREPARA
	//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
	var temporizador = new Temporizador();
 
	//SE INICIALIZA EL TEMPORIZADOR
	temporizador.init();
 
//FUNCIONES
	//FUNCION QUE RESTABLECE EL CRONOMETRO
	function restablecer(){
		temporizador.reiniciar();
	}
 
	//FUNCION QUE ACTUALIZA LA LISTA
	function actLista(){
		var lista = temporizador.recordatorio();
		var res="";
 
		if(lista){
			for(var i=0; i<lista.length; i+=2){
				res+=lista[i+1]+": "+lista[i]+"<br>";
			}
		} else {
			res = "No se encontraron recordatorios.";
		}
 
		document.getElementById("lista").innerHTML = res;
	}
 
	//FUNCION PARA AGREGAR RECORDATORIO
	function agregarRecordatorio(){
		var mensaje = document.getElementById("agregarMensaje").value;
		var tiempo = document.getElementById("agregarTiempo").value;
 
		if(mensaje && tiempo){
			temporizador.crearRecordatorio(mensaje, tiempo);
 
			document.getElementById("agregarMensaje").value="";
			document.getElementById("agregarTiempo").value="";
 
			temporizador.reordenarRecordatorio();
			actLista();
		} else {
			alert("Introduce el mensaje y el tiempo que quieres agregar a la lista de recordatorios.");
		}
	}
 
	//FUNCION PARA QUITAR RECORDATORIO
	function quitarRecordatorio(){
		var mensaje = document.getElementById("quitarMensaje").value;
		var tiempo = parseInt(document.getElementById("quitarTiempo").value);
		var error = true;
 
		if(tiempo){
			temporizador.eliminarRecordatorio(tiempo);
			error=false;
		} else if(mensaje){
			temporizador.eliminarRecordatorio(mensaje);
			error=false;
		} else {
			alert("Introduce el mensaje o el tiempo que quieres eliminar de la lista de recordatorios.");
		}
 
		if(!error){
			document.getElementById("quitarMensaje").value="";
			document.getElementById("quitarTiempo").value="";
			temporizador.reordenarRecordatorio();
			actLista();
		}
	}
 
	//FUNCION PARA LIMPIAR LA LISTA
		function quitarTodo(){
			temporizador.limpiarRecordatorio();
			actLista();
		}
 
//FUNCIONAMIENTO
	//PREPARACION
		actLista();
 
	//DETECCION DE PULSACION EN BOTONES
		document.getElementById("actualizar").onclick=actLista;
		document.getElementById("agregar").onclick=agregarRecordatorio;
		document.getElementById("quitar").onclick=quitarRecordatorio;
		document.getElementById("quitarTodo").onclick=quitarTodo;
		document.getElementById("reiniciar").onclick=restablecer;
 
</script>

Le coloqué unos inputs para que sea mas fácil interactuar con tu temporizador.
Agrega unos recordatorios y a medida que alcancen el tiempo especificado, te irá mostrando bajo el contador el mensaje que quieras.

Por ejemplo:
Si agrego un recordatorio en el segundo 60 con el mensaje "Acaba de transcurrir 1 minuto", otro recordatorio en el segundo 120 con el mensaje "Acaban de transcurrir 2 minutos" y por ultimo, otro recordatorio al segundo 180 que diga "Me cansé de contar...".

Cuando el temporizador esté entre los segundos 60 y 119, mostrará el mensaje "Acaba de transcurrir 1 minuto". Cuando esté entre los segundos 120 y 179 mostrará el mensaje "Acaban de transcurrir 2 minutos" y cuando supere el segundo 180 mostrará el mensaje "Me cansé de contar...".

Nota:
El botón "Actualizar" no es necesario usarlo, pero lo dejé ahí por si alguna vez necesitas aplicar esa mecánica, en caso de que no lo necesites, simplemente elimina las lineas 235 y 7 (en ese orden) del código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 03/03/2021 22:22:08
Hola Gio, te agradezco enormemente el esfuerzo, está increible, enhorabuena. Gracias.

Y si queremos simplificarlo para que sólo aparezcan los segundos y debajo el recordatorio ?, ejemplo:

60
hola

así de simple ,
suprimir agregar recordatorio y sus campos y
suprimir la lista de recordatorios y sus campos.

me gustaría agregar recordatorio pero desde código, añadir el segundo en el que quiero que aparezca el mensaje y el mensaje que deberá aparecer (desde código esto)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Gio (79 intervenciones) el 03/03/2021 23:30:20
El código limpio es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<div id="countdown">0</div>
<div id="mensaje"></div>
 
<script>
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime(){
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
    }
 
	crearRecordatorio(msg, s){
		this.x = localStorage.getItem("recordatorio");
		if(this.x == null || this.x == ""){
			localStorage.setItem("recordatorio", (s + ";" + msg));
		} else {
			localStorage.setItem("recordatorio", (this.x + ";" + s + ";" + msg));
		}
		this.reordenarRecordatorio();
	}
 
	eliminarRecordatorio(inp){
		this.x3 = this.recordatorio();
		this.res="";
		this.r=false;
 
		if(Number.isInteger(inp)){
			for(var i = 0; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i]+";"+this.x3[i+1];
				}
			}
		} else {
			for(var i = 1; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i-1]+";"+this.x3[i];
				}
			}
		}
		localStorage.setItem("recordatorio", this.res);
		this.reordenarRecordatorio();
	}
 
	limpiarRecordatorio(){
		localStorage.removeItem("recordatorio");
	}
 
	recordatorio(){
		this.x4 = localStorage.getItem("recordatorio");
		if(this.x4 != null){
			return this.x4.split(";");
		} else {
			return false;
		}
	}
 
	reordenarRecordatorio(){
		this.x2=this.recordatorio();
		this.l=this.x2.length;
		this.ram=Array();
 
		for(var i=this.l/2-1; i>0; i--){
			for(var i2=0; i2<(i*2+1); i2+=2){
				if(parseInt(this.x2[i2]) > parseInt(this.x2[i2+2])){
					this.ram[0]=this.x2[i2];
					this.ram[1]=this.x2[i2+1];
 
					this.x2[i2]=this.x2[i2+2];
					this.x2[i2+1]=this.x2[i2+3];
 
					this.x2[i2+2]=this.ram[0];
					this.x2[i2+3]=this.ram[1];
					console.log(this.x2[i2]+";"+this.x2[i2+1]+";"+this.x2[i2+2]+";"+this.x2[i2+3]);
				}
			}
		}
 
		this.limpiarRecordatorio();
		for(var i=0; i<this.l; i+=2){
			this.crearRecordatorio(this.x2[i+1], this.x2[i]);
		}
	}
 
    init() {
		document.getElementById('countdown').innerHTML = this.getTime();
 
		setTimeout(() => {
			this.loop = setInterval(() => {
				document.getElementById('countdown').innerHTML = this.getTime();
				this.x5=this.recordatorio();
				this.ok=false;
 
				if(this.x5){
					for(var i = 0; i < this.x5.length; i+=2){
						if(this.getTime() >= this.x5[i]){
							document.getElementById('mensaje').innerHTML = this.x5[i+1];
							this.ok=true;
						}
					}
				}
 
				if(!this.ok){
					document.getElementById('mensaje').innerHTML = "Nada";
				}
			},1000);
		}, this.extra);
 
    }
 
	fin(){
		clearInterval(this.loop);
	}
}
//PREPARACION
	//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
		var temporizador = new Temporizador();
 
	//SE INICIALIZA EL TEMPORIZADOR
		temporizador.init();
</script>

Con las siguientes funciones debes trabajar en tu código:
1
2
3
4
5
6
7
8
9
10
11
12
13
//USO DESDE EL CODIGO
	//REINICIAR TEMPORIZADOR (LO RESTAURA A 0 SEGUNDOS)
		//temporizador.reiniciar();
 
	//FUNCION PARA AGREGAR RECORDATORIO
		temporizador.crearRecordatorio("Hola", 60);
 
	//FUNCION PARA QUITAR RECORDATORIO
		temporizador.eliminarRecordatorio(60); //PUEDES USAR EL TIEMPO EN EL QUE ESTÁ PROGRAMADO EL RECORDATORIO QUE QUIERES ELIMINAR
		temporizador.eliminarRecordatorio("Hola"); //O PUEDES USAR EL MENSAJE DEL RECORDATORIO QUE QUIERES ELIMINAR
 
	//FUNCION PARA ELIMINAR TODOS LOS RECORDATORIOS PROGRAMADOS
		temporizador.limpiarRecordatorio();

Algo que te recomiendo, es manipular el temporizador desde la consola de tu navegador con esas funciones. Para ello, presiona F12, dirigete a "console" y desde ahí ejecuta tus funciones para configurarlo a tu gusto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 03/03/2021 23:43:45
gracias de nuevo

te pregunto algo del código anterior,

he partido el código en partes.
- archivo js con el script 1.js
- archivo 1.html con el formulario
- archivo 2.html donde quiero que muestre sólo el recordatorio . Problema : Si muestra el recordatorio también nos muestra los segundos parece que están unidos, por que? es posible quitar los segundos de 2.html?

2.html
1
2
3
4
<div  id="countdown">0</div><font face="Comic Sans MS,arial,verdana">
<div  id="mensaje"></div>
 
<script src="1.js"></script>


1.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<div id="countdown">0</div><font face="Comic Sans MS,arial,verdana">
<div id="mensaje"></div>
<hr>
 
<h2>Lista de recordatorios:</h2><input type="hidden">
<div id="lista"></div>
<button id="actualizar">Actualizar</button> <br><br>
 
<h2>Agregar recordatorio:</h2>
Mensaje: <input type="text" id="agregarMensaje"><br>
Tiempo: <input type="number" id="agregarTiempo"> <br>
<button id="agregar">Agregar</button><br><br>
 
<h2>Quitar recordatorio:</h2>
No es necesario colocar los 2 datos, con uno es suficiente.<br>
Mensaje: <input type="text" id="quitarMensaje"><br>
Tiempo: <input type="number" id="quitarTiempo"><br>
<button id="quitar">Quitar</button><br><br>
 
<h2>Eliminar todos los recordatorios:</h2>
<button id="quitarTodo">Limpiar</button><br><br>
 
<h2>Reiniciar temporizador:</h2>
<button id="reiniciar">Reiniciar</button>
 
<script src="1.js"></script>

------------------------------------

Otra pregunta:

Si quiero tener varios contadores y que cada empieze diferente ?
Lo digo por que he copiado y pegado el mismo código pero aunque cambie el nombre del html todos los contadores van igual y si reinicio uno el resto también se reinician. Entiendo que tendré que modificar el nombre de alguna variable en el código ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Gio (79 intervenciones) el 04/03/2021 00:14:43
El código de 2.html quedaría así:
1
2
3
4
<font face="Comic Sans MS,arial,verdana">
<div id="mensaje"></div>
 
<script src="1.js"></script>
Si te fijas, quité la div "countdown" para que no se muestre el temporizador.

Y el código de 1.js quedaría así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime(){
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
    }
 
	crearRecordatorio(msg, s){
		this.x = localStorage.getItem("recordatorio");
		if(this.x == null || this.x == ""){
			localStorage.setItem("recordatorio", (s + ";" + msg));
		} else {
			localStorage.setItem("recordatorio", (this.x + ";" + s + ";" + msg));
		}
	}
 
	eliminarRecordatorio(inp){
		this.x3 = this.recordatorio();
		this.res="";
		this.r=false;
 
		if(Number.isInteger(inp)){
			for(var i = 0; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i]+";"+this.x3[i+1];
				}
			}
		} else {
			for(var i = 1; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i-1]+";"+this.x3[i];
				}
			}
		}
		localStorage.setItem("recordatorio", this.res);
	}
 
	limpiarRecordatorio(){
		localStorage.removeItem("recordatorio");
	}
 
	recordatorio(){
		this.x4 = localStorage.getItem("recordatorio");
		if(this.x4 != null){
			return this.x4.split(";");
		} else {
			return false;
		}
	}
 
	reordenarRecordatorio(){
		this.x2=this.recordatorio();
		this.l=this.x2.length;
		this.ram=Array();
 
		for(var i=this.l/2-1; i>0; i--){
			for(var i2=0; i2<(i*2+1); i2+=2){
				if(parseInt(this.x2[i2]) > parseInt(this.x2[i2+2])){
					this.ram[0]=this.x2[i2];
					this.ram[1]=this.x2[i2+1];
 
					this.x2[i2]=this.x2[i2+2];
					this.x2[i2+1]=this.x2[i2+3];
 
					this.x2[i2+2]=this.ram[0];
					this.x2[i2+3]=this.ram[1];
					console.log(this.x2[i2]+";"+this.x2[i2+1]+";"+this.x2[i2+2]+";"+this.x2[i2+3]);
				}
			}
		}
 
		this.limpiarRecordatorio();
		for(var i=0; i<this.l; i+=2){
			this.crearRecordatorio(this.x2[i+1], this.x2[i]);
		}
	}
 
    init() {
		if(document.getElementById('countdown')){
			document.getElementById('countdown').innerHTML = this.getTime();
		}
 
		setTimeout(() => {
			setInterval(() => {
				if(document.getElementById('countdown')){
					document.getElementById('countdown').innerHTML = this.getTime();
				}
				this.x5=this.recordatorio();
				this.ok=false;
 
				if(this.x5){
					for(var i = 0; i < this.x5.length; i+=2){
						if(this.getTime() >= this.x5[i]){
							if(document.getElementById('mensaje')){
								document.getElementById('mensaje').innerHTML = this.x5[i+1];
							}
							this.ok=true;
						}
					}
				}
 
				if(!this.ok){
					if(document.getElementById('mensaje')){
						document.getElementById('mensaje').innerHTML = "Nada";
					}
				}
			},1000);
		}, this.extra);
 
    }
}
 
//SE PREPARA
	//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
	var temporizador = new Temporizador();
 
	//SE INICIALIZA EL TEMPORIZADOR
	temporizador.init();
 
//FUNCIONES
	//FUNCION QUE RESTABLECE EL CRONOMETRO
	function restablecer(){
		temporizador.reiniciar();
	}
 
	//FUNCION QUE ACTUALIZA LA LISTA
	function actLista(){
		var lista = temporizador.recordatorio();
		var res="";
 
		if(lista){
			for(var i=0; i<lista.length; i+=2){
				res+=lista[i+1]+": "+lista[i]+"<br>";
			}
		} else {
			res = "No se encontraron recordatorios.";
		}
 
		document.getElementById("lista").innerHTML = res;
	}
 
	//FUNCION PARA AGREGAR RECORDATORIO
	function agregarRecordatorio(){
		var mensaje = document.getElementById("agregarMensaje").value;
		var tiempo = document.getElementById("agregarTiempo").value;
 
		if(mensaje && tiempo){
			temporizador.crearRecordatorio(mensaje, tiempo);
 
			document.getElementById("agregarMensaje").value="";
			document.getElementById("agregarTiempo").value="";
 
			temporizador.reordenarRecordatorio();
			actLista();
		} else {
			alert("Introduce el mensaje y el tiempo que quieres agregar a la lista de recordatorios.");
		}
	}
 
	//FUNCION PARA QUITAR RECORDATORIO
	function quitarRecordatorio(){
		var mensaje = document.getElementById("quitarMensaje").value;
		var tiempo = parseInt(document.getElementById("quitarTiempo").value);
		var error = true;
 
		if(tiempo){
			temporizador.eliminarRecordatorio(tiempo);
			error=false;
		} else if(mensaje){
			temporizador.eliminarRecordatorio(mensaje);
			error=false;
		} else {
			alert("Introduce el mensaje o el tiempo que quieres eliminar de la lista de recordatorios.");
		}
 
		if(!error){
			document.getElementById("quitarMensaje").value="";
			document.getElementById("quitarTiempo").value="";
			temporizador.reordenarRecordatorio();
			actLista();
		}
	}
 
	//FUNCION PARA LIMPIAR LA LISTA
		function quitarTodo(){
			temporizador.limpiarRecordatorio();
			actLista();
		}
 
//FUNCIONAMIENTO
	//PREPARACION
		actLista();
 
	//DETECCION DE PULSACION EN BOTONES
		document.getElementById("actualizar").onclick=actLista;
		document.getElementById("agregar").onclick=agregarRecordatorio;
		document.getElementById("quitar").onclick=quitarRecordatorio;
		document.getElementById("quitarTodo").onclick=quitarTodo;
		document.getElementById("reiniciar").onclick=restablecer;
Modifiqué las líneas 99, 105 114 y 123 para que el código no de error cuando no encuentre las divs "countdown" y "mensaje" por si las necesitas quitar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 04/03/2021 08:50:21
Espectacular , muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 04/03/2021 09:35:35
en el código que dejas para que probemos en consola

es posbile suprimir " eliminar recordatorio" y "reordenar recordatorio" y seguir funcionando ?

-----------------

he probado consola como me dices y bien , mi problema ahora es escribir en código y que funcione
- botón reiniciar al código
- funcion temporizador.crearRecordatorio("Hola", 60);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Gio
Val: 368
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por Gio (79 intervenciones) el 04/03/2021 11:43:12
Tienes razón, había un bucle que perjudicaba la función temporizador.agregarRecordatorio() en el archivo 1.js

Ya lo solucioné:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime(){
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
    }
 
	crearRecordatorio(msg, s){
		this.x = localStorage.getItem("recordatorio");
		if(this.x == null || this.x == ""){
			localStorage.setItem("recordatorio", (s + ";" + msg));
		} else {
			localStorage.setItem("recordatorio", (this.x + ";" + s + ";" + msg));
		}
		this.reordenarRecordatorio();
	}
 
	eliminarRecordatorio(inp){
		this.x3 = this.recordatorio();
		this.res="";
		this.r=false;
 
		if(Number.isInteger(inp)){
			for(var i = 0; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i]+";"+this.x3[i+1];
				}
			}
		} else {
			for(var i = 1; i < this.x3.length; i+=2){
				if(this.x3[i] != inp){
					if(this.r){
						this.res+=";";
					} else {
						this.r=true;
					}
					this.res+=this.x3[i-1]+";"+this.x3[i];
				}
			}
		}
		localStorage.setItem("recordatorio", this.res);
		this.reordenarRecordatorio();
	}
 
	limpiarRecordatorio(){
		localStorage.removeItem("recordatorio");
	}
 
	recordatorio(){
		this.x4 = localStorage.getItem("recordatorio");
		if(this.x4 != null){
			return this.x4.split(";");
		} else {
			return false;
		}
	}
 
	reordenarRecordatorio(){
		this.x2=this.recordatorio();
		this.l=this.x2.length;
		this.ram=Array();
 
		for(var i=this.l/2-1; i>0; i--){
			for(var i2=0; i2<(i*2+1); i2+=2){
				if(parseInt(this.x2[i2]) > parseInt(this.x2[i2+2])){
					this.ram[0]=this.x2[i2];
					this.ram[1]=this.x2[i2+1];
 
					this.x2[i2]=this.x2[i2+2];
					this.x2[i2+1]=this.x2[i2+3];
 
					this.x2[i2+2]=this.ram[0];
					this.x2[i2+3]=this.ram[1];
 
				}
			}
		}
 
		this.limpiarRecordatorio();
		this.res=""
		this.r=false;
		for(var i=0; i<this.l; i+=2){
			if(this.r){
				this.res+=";"+this.x2[i]+";"+this.x2[i+1];
			} else {
				this.res+=this.x2[i]+";"+this.x2[i+1];
				this.r=true;
			}
		}
		localStorage.setItem("recordatorio", this.res);
	}
 
    init() {
		if(document.getElementById('countdown')){
			document.getElementById('countdown').innerHTML = this.getTime();
		}
 
		setTimeout(() => {
			setInterval(() => {
			if(document.getElementById('countdown')){
					document.getElementById('countdown').innerHTML = this.getTime();
			}
				this.x5=this.recordatorio();
				this.ok=false;
 
				if(this.x5){
					for(var i = 0; i < this.x5.length; i+=2){
						if(this.getTime() >= this.x5[i]){
							if(document.getElementById('mensaje')){
								document.getElementById('mensaje').innerHTML = this.x5[i+1];
							}
							this.ok=true;
						}
					}
				}
 
				if(!this.ok && document.getElementById('mensaje')){
					document.getElementById('mensaje').innerHTML = "Nada";
				}
			},1000);
		}, this.extra);
 
    }
}
 
//SE PREPARA
	//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
	var temporizador = new Temporizador();
 
	//SE INICIALIZA EL TEMPORIZADOR
	temporizador.init();
 
//FUNCIONES
	//FUNCION QUE RESTABLECE EL CRONOMETRO
	function restablecer(){
		temporizador.reiniciar();
	}
 
	//FUNCION QUE ACTUALIZA LA LISTA
	function actLista(){
		var lista = temporizador.recordatorio();
		var res="";
 
		if(lista){
			for(var i=0; i<lista.length; i+=2){
				res+=lista[i+1]+": "+lista[i]+"<br>";
			}
		} else {
			res = "No se encontraron recordatorios.";
		}
 
		document.getElementById("lista").innerHTML = res;
	}
 
	//FUNCION PARA AGREGAR RECORDATORIO
	function agregarRecordatorio(){
		var mensaje = document.getElementById("agregarMensaje").value;
		var tiempo = document.getElementById("agregarTiempo").value;
 
		if(mensaje && tiempo){
			temporizador.crearRecordatorio(mensaje, tiempo);
 
			document.getElementById("agregarMensaje").value="";
			document.getElementById("agregarTiempo").value="";
 
			temporizador.reordenarRecordatorio();
			actLista();
		} else {
			alert("Introduce el mensaje y el tiempo que quieres agregar a la lista de recordatorios.");
		}
	}
 
	//FUNCION PARA QUITAR RECORDATORIO
	function quitarRecordatorio(){
		var mensaje = document.getElementById("quitarMensaje").value;
		var tiempo = parseInt(document.getElementById("quitarTiempo").value);
		var error = true;
 
		if(tiempo){
			temporizador.eliminarRecordatorio(tiempo);
			error=false;
		} else if(mensaje){
			temporizador.eliminarRecordatorio(mensaje);
			error=false;
		} else {
			alert("Introduce el mensaje o el tiempo que quieres eliminar de la lista de recordatorios.");
		}
 
		if(!error){
			document.getElementById("quitarMensaje").value="";
			document.getElementById("quitarTiempo").value="";
			temporizador.reordenarRecordatorio();
			actLista();
		}
	}
 
	//FUNCION PARA LIMPIAR LA LISTA
		function quitarTodo(){
			temporizador.limpiarRecordatorio();
			actLista();
		}
 
if(document.getElementById("actualizar")){
//FUNCIONAMIENTO
	//PREPARACION
		actLista();
 
	//DETECCION DE PULSACION EN BOTONES
		document.getElementById("actualizar").onclick=actLista;
		document.getElementById("agregar").onclick=agregarRecordatorio;
		document.getElementById("quitar").onclick=quitarRecordatorio;
		document.getElementById("quitarTodo").onclick=quitarTodo;
		document.getElementById("reiniciar").onclick=restablecer;
}

El error fue solucionado entre las líneas 95 y 105. Pido disculpas por ese descuido y espero que ahora si funcione todo adecuadamente.
Nota: ya no es necesario que uses la funcion temporizador.reordenarRecordatorios(), se invoca automaticamente cada vez que haces uso de las funciones temporizador.crearRecordatorio() y temporizador.eliminarRecordatorio().
Te hago una pregunta ¿quieres el temporizador en segundos (así como está) o quieres que te muestre el tiempo transcurrido en días, horas, minutos y segundos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 04/03/2021 14:10:56
En segundos es perfecto gracias . Y muy buen trabajo.


Cómo podemos integrar esto en el código inicial del contador ?
1
temporizador.crearRecordatorio("Hola", 60);

para que sea lo más simple y breve posible Y eliminar todo el resto de código sobrante


Con este primer Código contador que publicaste

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<div id="countdown">0</div>
<button id="reiniciar">Reiniciar temporisador</button>
 
<script>
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime() {
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
    }
 
    init() {
		document.getElementById('countdown').innerHTML = this.getTime();
 
		setTimeout(() => {
			setInterval(() => {
				document.getElementById('countdown').innerHTML = this.getTime();
			},1000);
		}, this.extra);
 
    }
}
 
//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
var temporizador = new Temporizador();
 
//SE INICIALIZA EL TEMPORIZADOR
temporizador.init();
 
//FUNCION QUE RESTABLECE EL CRONOMETRO
function restablecer(){
	temporizador.reiniciar();
}
 
//SE DETECTA UN CLICK EN EL BOTON QUE REINICIA EL CRONOMETRO
document.getElementById("reiniciar").onclick=restablecer;
 
</script>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 232
Ha disminuido 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

temporizador que no pare al refrescar la web

Publicado por xra (70 intervenciones) el 04/03/2021 22:32:39
Algo de este estilo pero que funcione sería posible ??


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<div id="countdown">0</div>
<div id="mensaje"</div>
<button id="reiniciar">Reiniciar temporisador</button>
 
 
<script>
//SE DECLARA EL OBJETO
class Temporizador {
	constructor() {
		if(localStorage.getItem("tiempo") == null){
			this.reiniciar();
		}
		this.extra=1000-1000*((((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000)-this.getTime());
    }
 
	reiniciar(){
		localStorage.setItem("tiempo", (new Date()-0));
	}
 
    getTime() {
        return parseInt(((new Date()-0)-parseInt(localStorage.getItem("tiempo")))/1000);
    }
 
 
 
 
 
	crearmensaje(msg, s){
 
var y = "";  (tiempo segundos)
var x = "hola" ;
 
if y = 5
document.getElementById("mensaje").innerHTML =  x;
 
		}
	}
 
 
 
    init() {
		document.getElementById('countdown').innerHTML = this.getTime();
 
		setTimeout(() => {
			setInterval(() => {
				document.getElementById('countdown').innerHTML = this.getTime();
			},1000);
		}, this.extra);
 
    }
}
 
//SE CREA EL OBJETO DENTRO DE UNA VARIABLE PARA SER USADO
var temporizador = new Temporizador();
 
//SE INICIALIZA EL TEMPORIZADOR
temporizador.init();
 
//FUNCION QUE RESTABLECE EL CRONOMETRO
function restablecer(){
	temporizador.reiniciar();
}
 
//SE DETECTA UN CLICK EN EL BOTON QUE REINICIA EL CRONOMETRO
document.getElementById("reiniciar").onclick=restablecer;
 
</script>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar