> Faqs > Cambiar valor de setInterval con variable

Cambiar valor de setInterval con variable

Hola; Os traigo un problema que tengo que resolver. Tengo una cuenta atras que muestro y funciona. Y además, inicialmente cada minuto, se recarga pues debe de actualizarse otra información. Además dentro de su ciclo debe de pasar de 60" a un refresco de 5" cuando solo queden 3 minutos. y esto casi funciona pues por DOM y en consola puedo ver que el refresco cambia automáticamente pero realmente el contador sigue refrescandose al minuto.

Es decir que si consulto el valor de la variable.localStorage refresco si cambia ,pero como parametro del setInterval no cambia. ¿como puedo hacerlo?

<script> localStorage.setItem ("refresco", '60000'); // inicia con 60 "
</script>

<div id="tablacuenta">
 <script>
 $(document).ready(function() {
     $('#tablacuenta').load('maxvalor.php');
         setInterval(
             function(){
             $('#tablacuenta').load('maxvalor.php');
         }, localStorage.getItem('refresco') // valor que necesito cambiar
     );
 }); </script>
</div>
<div id="countdown"></div><!-- resultado countdown -->

[ archivo maxvalor.php]

var timer; clearInterval(timer);
cuentaregresibamaxfinal ('2020', '10','07', '18', '00', timer);

[funciones]

function cuentaregresibamaxfinal (ao, mes, dia, hora, minu, timer)
	{
	var end = new Date(ao, mes, dia, hora, minu);
	var _second = 1000; var _minute = _second * 60;  var _hour = _minute * 60;  var _day = _hour * 24;

		function showRemaining() {
		var now = new Date ();
		distance = end - now;
				
		// el refresco pasa de 60' a 5' minutos	
		if (distance < '180000' & localStorage.getItem ('refresco') == 60000) {  localStorage.setItem ('refresco', 5000); console.log('Cambio a 5s'); }
		
		
		var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour);
		var minutes = Math.floor((distance % _hour) / _minute); var seconds = Math.floor((distance % _minute) / _second);
		var resultado = '', condias = ''; if (days > 0) condias = days + ' d ';
		resultado = condias + ' ' + ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2)  + ':'+ ('0' + seconds).slice(-2);
		document.getElementById('countdown').innerHTML = resultado;
		}
	
	
	timer = setInterval(showRemaining, 1000); // cada 1 segundo
}

Respuestas

Todavía no se han recibido respuestas a esta pregunta. ¿Quieres enviar la primera?