Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Freelife

[Resolvido] chamar função novamente...

Recommended Posts

Boa noite galera...

 

O problema é o seguinte, eu criei um pequeno contador de tempo.

 

O botão iniciar chama a função contador();

O botão parar chama a função parar();

 

A função limpar tem um clearInterval(variavel); Que está funcionando normal.

O problema é a função contador.

function contador() {
		var saida = ((horas<10)?"0"+horas:horas) + ":" + ((minutos<10)?"0"+minutos:minutos) + ":" + 

((segundos<10)?"0"+segundos:segundos) + ":" + ((milis<10)?"0"+milis:milis);
	if(milis<9){
		milis++;
	}
	else{
		milis=0;
	if(segundos < 60){
		segundos++;
	}
	else{	
		segundos = 0;
		if(minutos < 59){
			minutos++;
		}
		else{
			minutos = 0;
			if(horas < 23){
				horas++;
			}
			else{
				horas = 0;
			}
		}
	}
	}
		document.getElementById("clock1").innerHTML = saida;
	tempo = setTimeout('contador()', 100);
	}

Quando clico no botão Iniciar ele chama a função quantas vezes eu clicar, isso faz com que altere a velocidade que a função é chamada... Fica um loop.

Tem como não chamar a função novamente...

Tipo a pessoa cliclou, acionou o contador, se ela clicar novamente não chame a função antes que clique no botão Zerar.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer uma outra função assim:

function Zera(){
contando_tempo=false
clearInterval(tempo)
}
function Verifica(){
if (contando_tempo){
tempo = setTimeout('contador()', 100);
}
}
E na hora de iniciar a contagem você muda o valor da variável "contando_tempo" para true

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer uma outra função assim:

function Zera(){
contando_tempo=false
clearInterval(tempo)
}
function Verifica(){
if (contando_tempo){
tempo = setTimeout('contador()', 100);
}
}
E na hora de iniciar a contagem você muda o valor da variável "contando_tempo" para true

eu entendi +/-...

 

Eu fiz como no exemplo que você deu... no início da função contador(); coloquei "contando_tempo=true" só que continua o mesmo problema, porque?! Toda vez que a pessoa clica no botão iniciar ele torna a variável como "true" novamente então chama a função.

 

Sei que to fazendo algo errado, mas não consigo descobrir o quê.

 

o meu código é esse;

 

<html>
<head>
<title>Contador</title>
<script type="text/javascript">
	var segundos = 0;  
	var minutos = 0;	
	var horas = 0;
	var milis = 0;
	function contador() {
		contando_tempo = true;
		var saida = ((horas<10)?"0"+horas:horas) + ":" + ((minutos<10)?"0"+minutos:minutos) + ":" + ((segundos<10)?"0"+segundos:segundos) + ":" + ((milis<10)?"0"+milis:milis);
	if(milis<9){
		milis++;
	}
	else{
		milis=0;
	if(segundos < 60){
		segundos++;
	}
	else{	
		segundos = 0;
		if(minutos < 59){
			minutos++;
		}
		else{
			minutos = 0;
			if(horas < 23){
				horas++;
			}
			else{
				horas = 0;
			}
		}
	}
	}
		document.getElementById("clock1").innerHTML = saida;
	tempo = setTimeout('contador()', 100);
	}
function limpa(){
	contando_tempo=false
	clearInterval(tempo);
}
function Verifica(){
	if (contando_tempo){
		tempo = setTimeout('contador()', 100);
	}
}
</script>
</head>

<body >
<span id="clock1"></span><br/>
<input type="submit"value="Iniciar" onClick="contador()"/><input type="submit"value="Parar" onClick="limpa()"/>
</body>
</html>

Obs: se no onClick eu tento chamar a função "verifica" dá erro na página.

 

Ainda tentando.

 

Abraços e vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obs: se no onClick eu tento chamar a função "verifica" dá erro na página.

Lembre-se que a função "verifica" tem o "V" maiúsculo e que antes disso você deve definir a variável !

Ficaria assim:

<input type="button"value="Iniciar" onClick="contando_tempo=true;Verifica()"/><input type="button"value="Parar" onClick="limpa()"/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obs: se no onClick eu tento chamar a função "verifica" dá erro na página.

Lembre-se que a função "verifica" tem o "V" maiúsculo e que antes disso você deve definir a variável !

Ficaria assim:

<input type="button"value="Iniciar" onClick="contando_tempo=true;Verifica()"/><input type="button"value="Parar" onClick="limpa()"/>

 

 

Mesmo fazendo assim não dá certo, pois, sempre que a pessoa clicar no botão, chamará a função novamente.

O que eu quero é que se a função tempo estiver correndo, não tenha como a pessoa clicar no botão iniciar novamente a não ser que ela tenha clicado no botão "parar".

 

Ainda estou tentando.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera...

 

Resolvi a situação de outra maneira...

 

 

function verifica(){
	if (ativo==0){
	document.getElementById("iniciar").disabled = true;
	document.getElementById("parar").disabled = false;
	}
   else if(ativo == 1){
	document.getElementById("iniciar").disabled = false;
	document.getElementById("parar").disabled = true;
   }
}
</script>
</head>

<body >
<span id="clock1"></span><br/>
<input type="button"id="iniciar" value="Iniciar" onClick="ativo=0; contador(); verifica()"/>
<input type="button" id="parar" value="Parar" onClick="ativo=1; para(); verifica()"/>
</body>
</html>
Ao clicar no botão iniciar ele faz com que a var "ativo" receba "0" chama a função verifica que desabilita o botão e habilita o botão parar, e quando clico no botão parar ele atribui "1" a variável "ativo" e chama a função "verifica" que habilita o botão iniciar e desabilita o "parar".

 

Valeu pela ajuda.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.