Ir para conteúdo

POWERED BY:

Arquivado

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

Luan Lima

Minha função entrou em loop

Recommended Posts

function Turno2(vez){

if (vez=='A')
{alert(vez);
this.onclick=Turno2('B');



   }else if(vez=='B'){alert(vez);
this.onclick=Turno2('A');

}

 

Esse minha função tá entrando em loop... A intenção é:

A cada CLIQUE no botão que está chamando essa função, ele executa o if A ou o if B sistematicamente, mas só a cada clique! Ele entrou em loop e fica executando eternamente, assim que eu dou o primeiro clique...

Não entendo porque está assim... Se fosse para gerar loop eu apenas precisaria de um Turno2('A ou B'), não precisaria de DOM....

 

Resumindo o que preciso:

Que quando a função for chamada, altere-se o botão que acabou de chamar a função, para que da próxima vez, ele tenha um comportamento diferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse A ou B se refere ao que no objeto que vc quer modificar? Não vejo em nenhum momento vc alterar essa propriedade no objeto dentro da função só chama como valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função é maior, na verdade eu defini assim:

Conforme uma condição é satisfeita, eu chamo a função com parametro A ou B, se for A eu executo um bloco de códigos(que retirei do exemplo, pois não acredito que haja problema com eles),são dois blocos diferentes: A e B.

O que eu quero é que os dois sejam executados, porém um de cada vez, e de modo a não executar o mesmo duas vezes(ficar alternando). Tudo isso a cada clique do mouse.

E eu tento alterar A para B e vice versa, lá no final: this.onclick=Turno2('A')

 

This se refere ao botão que chama a função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não faz sentido chamar a função dentro dela mesma e é o que vc faz com Turno2(), e como expliquei vc não está alterando valor de nada só chamando o valor. O A e B é que propriedade do seu botão? é essa propriedade seja ela value, name, etc que vc tem que alterar. entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi... Mas ainda não sei como fazer, vou tentar de modo bem genérico mostrar o que quero:

vamos supor que eu tenha uma função:

function() e eu a chame de duas maneiras em dois lugares distintos do script:

function('A') e function('B').

Essa função faz uma verificação IF para descobrir se foi passado um A ou um B(a função tem uma variável definida).

 

Logo a dúvida é:

Se eu tenho um botão HTML definido com Onclick:

 <input id="test" name="test" type="button" onClick="Turno2('B');" value="button"  />     

 

Repare que no Onclick eu passo Turno2('B'), a grande dúvida é: Será que por DOM, é possível modificar aquele Bzinho ali e transformar num A, sem chamar a função, de modo que no PRÓXIMO CLIQUE, a função seja chamada com o novo parametro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não! vc não está querendo usar a função para modificar um valor de atributo vc está querendo reaproveitar a função modificando o parâmetro da função. Como já lhe falei anteriormente se vc quizer que um botão apresente duas opções vc tem que trabalhar essa modificação em um atributo observe que o atributo value do seu botão só recebe o valor button por que vc não altera esse valor quando chamar sua função trocando value="A" para value="B".

 

obs: equivocadamente expressei propriedade como atributo, propriedade é uma regra CSS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara... a forma "bonita" de fazer oq vc quer, é:

var vez = 'A';
function Turno2(){

   alert( vez );

   vez = vez==='A' ? 'B' : 'A';
}
e no teu botão:

 <input id="test" name="test" type="button" onClick="Turno2();" value="button"  />
sem parâmetro nenhum, pois estou usando uma variavel de escopo global para ser a minha flag.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu William era exatamente isso que eu precisava!!! Valeu pela ajuda também Berg, eu nem tinha pensado nisso de utilizar o value.. realmente seria uma saída.

Obrigado a todos!

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.