usos propuestos nuevo nuevas funciones funcionamiento correo javascript jquery api events google-maps

javascript - nuevo - propuestos en gmail



¿Cómo borro este setInterval (4)

La forma más sencilla en que podría pensar: agregar una clase.

Simplemente agregue una clase (en cualquier elemento) y verifique dentro del intervalo si está allí. Creo que esto es más confiable, personalizable y de otro idioma que cualquier otra manera.

var i = 0; this.setInterval(function() { if(!$(''#counter'').hasClass(''pauseInterval'')) { //only run if it hasn''t got this class ''pauseInterval'' console.log(''Counting...''); $(''#counter'').html(i++); //just for explaining and showing } else { console.log(''Stopped counting''); } }, 500); /* In this example, I''m adding a class on mouseover and remove it again on mouseleave. You can of course do pretty much whatever you like */ $(''#counter'').hover(function() { //mouse enter $(this).addClass(''pauseInterval''); },function() { //mouse leave $(this).removeClass(''pauseInterval''); } ); /* Other example */ $(''#pauseInterval'').click(function() { $(''#counter'').toggleClass(''pauseInterval''); });

body { background-color: #eee; font-family: Calibri, Arial, sans-serif; } #counter { width: 50%; background: #ddd; border: 2px solid #009afd; border-radius: 5px; padding: 5px; text-align: center; transition: .3s; margin: 0 auto; } #counter.pauseInterval { border-color: red; }

<!-- you''ll need jQuery for this. If you really want a vanilla version, ask --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <p id="counter">&nbsp;</p> <button id="pauseInterval">Pause/unpause</button></p>

Normalmente, id establece el intervalo en una var y luego borra la var como var the_int = setInterval();clearInterval(the_int); pero para que mi código funcione, lo pongo en una función anónima:

function intervalTrigger() { setInterval( function() { if(timedCount >= markers.length){timedCount = 0;} google.maps.event.trigger(markers[timedCount], "click"); timedCount++; }, 5000 ); }; intervalTrigger();

¿Cómo borro esto? var test = intervalTrigger();clearInterval(test); pero eso no funcionó. Lo cual, esperaba que no funcionara, pero solo le di una oportunidad.

Básicamente, necesito que esto deje de activarse una vez que se hace clic en mi Google Map ... por ejemplo

google.maps.event.addListener(map, ''click'', function() { //stop timer });


El método setInterval devuelve un identificador que puede usar para borrar el intervalo. Si desea que la función lo devuelva, simplemente devuelve el resultado de la llamada al método:

function intervalTrigger() { return window.setInterval( function() { if (timedCount >= markers.length) { timedCount = 0; } google.maps.event.trigger(markers[timedCount], "click"); timedCount++; }, 5000 ); }; var id = intervalTrigger();

Luego, para borrar el intervalo:

window.clearInterval(id);


// Initiate set interval and assign it to intervalListener var intervalListener = self.setInterval(function () {someProcess()}, 1000); function someProcess() { console.log(''someProcess() has been called''); // If some condition is true clear the interval if (stopIntervalIsTrue) { window.clearInterval(intervalListener); } }


the_int=window.clearInterval(the_int);