Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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();