Solucionado (ver solução)
Solucionado
(ver solução)
17
respostas

Duvida codigo ao chamar funcao com .onclick

Ola,

Alguem poderia me ajudar e ver o que tem de errado nesse codigo? Obrigada.

17 respostas

Opa Taina, tudo bem ? Pode postar o código ?

Abraços,

ola sergio, tudo sim, eu cheguei a postar ontem mas nao foi. tentarei novamente.

...codigos do html antes..

e abaixo comeca o javascript..

var numeroDigitado = document.getElementById("numero");
var BotaoAdivinhar = document.getElementById("adivinhar");

x_um =[];
x_dois =[];
cont=0;



var tick = function () {
for(i=0; i<=6; i++) {

var random = function () {
    var y = Math.round(Math.random() *60 +1);
    x_um.push(y);
    break;

var user_numbers = function () {
    x_dois.push(numeroDigitado.value);
    break;
        if (x_um == x_dois) {
            cont=cont + 1;
        } 

    };
};
};
};


BotaoAdivinhar.onclick = tick;

PS: se eu colocar a entrada do html e js, o codigo nao aparece aqui todo.

Então, vendo por cima tem algumas coisas: 1 - Dentro de function não usamos break, e sim return; 2 - As funções random() e user_numbers() não estão sendo chamadas em nenhum lugar.

Tenta arrumar isso e ver se funciona.

Oi sergio, é que eu coloquei essas duas funcoes dentro da funcao tick que estou chamando por ultimo. Ta certo?

na verdade eu fiz o desafio utilizando o prompt e deu certo mas agora eu queria fazer da outra maneira, com o input.. dai estou tentando ver o motivo de nao estar pegando...

aqui nesse codigo quando coloco o numero desejado na caixa de texto dai ele conta os outros indices com o mesmo numero que coloquei e deveria ser aleatorio. voce sabe o motivo? obrigada.

var adivinhar = document.getElementById("adivinhar");
var numero = document.getElementById("numero");
var x=[];
var y=[];
cont=0;

for (i=0;i<=5;i++) {
var o= Math.floor(Math.random ()* 60 + 1);
x.push(o);
};

 var botao = function () {
      for(i=0;i<=x.length;i++) {
   y.push(numero.value);
   alert(y);
 }
 };

 adivinhar.onclick = botao;

Então, mas mesmo estando dentro da função tick, eles devem ser chamados em algum lugar. E esse ultimo exemplo, não entendi muito bem o que acontece , se você colocar 15 por exemplo ele vai procurar o indice 15 é isso ?

o código ficou meio confuso aqui no forum.. :S

Sergio, aquela parte de colocar o numero aleatorio e ir colocando num vetor, eu consegui, agora estou tentando a parte do usuario digitar os numeros e ir arquivando num vetor, mas estou fazendo separado. poderia ver isso? nao precisa considerar a parte de ser entre 1 e 60 que depois eu implemento isso. obrigada,

var x=[];

var User_try = function () { for (i=0;i<=5;i++) { var numero = document.getElementById("numero"); x.push(numero.value); } };

var Mostra = function () { alert(x); };

var BotaoClicar = function () { for(i=0 ; i<=5 ; i++) { var adivinhar = document.getElementById("adivinhar"); adivinhar.onclick = User_try; } };

BotaoClicar(); Mostra();

eu queria que o usuario fosse colocando os numeros, apertando o botao, um por um.. e a medida que fosse clicando no botao ele fosse acrescentando no vetor, sabe?

Olá Taina, vi seu código algumas considerações:

1 - Para pegar o valor de "numero" é necessário usar o textContent (para pegar o texto de dentro) e chamar a div sem o .value, pois ela ja irá trazer o valor por si só. 2 - Se você usar o for no User_try ele vai armazenar 5 vezes cada valor; 3 - A função de onclick só funcionou usando uma função anonima, o código vai ficar mais ou menos assim:

var x=[];

var User_try = function () { 
    var numero = document.getElementById("numero").textContent;
    x.push(numero); 
};

var Mostra = function () { 
    alert(x); 
};

var BotaoClicar = function () { 
    for(i=0 ; i<=5 ; i++) { 
        var adivinhar = document.getElementById("adivinhar");
        adivinhar.onclick = function(){
            User_try();
        }
    } 
};

BotaoClicar(); 
Mostra();

oi sergio, obrigada,

eu executei o codigo acima mas o alert vazio surge logo antes de tudo , impossibilitando de digitar o primeiro numero na caixa de texto.

solução!

Então, nesse caso você tem que chamar a função Mostra() em algum momento especifico, pois como ela já esta sendo chamada no corpo do código, ela é executada em seguida.

obrigada

sergio,

fiz o codigo do usuario digitar 6 numeros entre 1 e 60 e a cada clique fosse armazenando num vetor... dai quando chegasse no índice 6 ele exibisse um alert. poderia ver se ficou bom?

  <input type=text id="numero" />
  <input type=submit id="adicionar" value="adicione" />


var x = [];
console.log("Por favor,digite seis numeros entre 1 e 60");
var numeroInserido = function () {
var user_number = document.getElementById("numero").value;
    x.push(user_number);
      if (x.length ==6) {
    alert("obrigada!");
    }
    console.log(x);
};

var limitar_clique = function () {
for (i=0 ; i<=5 ; i++) {
var clicar = document.getElementById("adicionar");
clicar.onclick = numeroInserido;
}
};

limitar_clique();

oi sergio, acabei de acrescentar a parte do numero random.. agora nao estou sabendo comparar as duas partes, comentei no codigo onde nao estou conseguindo fazer.. para comparar o valor de x[i] e y[i] que é o vetor dos números aleatórios com os números inseridos pelo usuário... obrigada por me ajudar.

<input type=text id="numero" />
<input type=submit id="adicionar" value="adicione" />



//parte do numero aleatorio

var y = [];

var numero_aleatorio = function () { 
    for (i=0 ; i<=5 ; i++) {
y.push(Math.round(Math.random () * 60));
    if (y.length == 6) {
      console.log(y);
  }
}
};

numero_aleatorio();


//parte dos seis números inserido pelo usuario

soma=0;  
var comparar = function () {  //essa função nao está pegando
        if (y[i] == x[i]) {
            soma= soma +1 ;        
    }  
};


var x = [];
console.log("Por favor,digite seis numeros entre 1 e 60");
var numeroInserido = function () {
var user_number = document.getElementById("numero").value;
    x.push(user_number);
      if (x.length ==6) {
    alert("obrigada!");
    }
    console.log(x);
    comparar();                  //aqui a chamada da função
};


var limitar_clique = function () {
for (i=0 ; i<=5 ; i++) {
var clicar = document.getElementById("adicionar");
clicar.onclick = numeroInserido;
}
};

limitar_clique();

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software