Jump to content
Maroto

[RESOLVIDO] Programa trava após executar um alert()

Recommended Posts

Olá, pessoas.

 

To com um problema nesse exercício. Esse programa deve receber os itens de uma receita digitados por usuário e salvá-los dentro de um vetor, sempre verificando se o item digitado já não consta. Caso conste, deve exibir um alert( ) informando ao usuário que dado item já foi computado anteriormente, senão, deve gravar o item no vetor e repetir esse ciclo até a condição do primeiro for ser saciada.

 

O problema é que quando o usuário digitar um valor que já existe no vetor ingredientes [ ] e o alert( ) do segundo for é exibido, após fechá-lo, o programa não dá continuidade, ou seja, no meu entender, deveria atribuir o valor false para variável verifica, com isso sair do segundo for, em seguida, ler a terceira condição:

 

//Condicional decrementa a variável contador1, caso o item digitado seja repetido e após a primeira iteração. 
if (contador1 != 1 && verifica == false) {
  contador1--;
  verifica = true;
}

 

Abaixo deixo o código completo.

 

<script>

	//Vetor que guarda os itens.
    var ingredientes = [];

    //Variável que guarda quantos itens serão adicionados no vetor ingredientes.
    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

    //Variável de verificação.
    var verifica = true;

    //Laço para guardar os itens s no vetor.
    for (var contador1 = 1; contador1 <= quantidade; contador1++){
        var item = prompt("Informe o "+contador1+"º item: ");

        /*Laço que verifica se o item digitado já existe ou não no vetor ingredientes. Caso exista, exibe alerta e muda o valor da variável de verificação para false.*/

        for (var contador2 = 0; contador2 < ingredientes.length || verifica != true; contador2++){
	        if (item == ingredientes[contador2]) {
	        	alert("Item já adicionado!");
	        	verifica = false;
	        }
	    }

	    //Condicional que quarda o item digitado na primeira iteração.
	    if (contador1 == 1 && verifica == true){
	    	ingredientes.push(item);
	    }

	    //Condicional que guarda o item após a primeira iteração e caso ele não seja repetido.
	    if (contador1 != 1 && verifica == true){
	    	ingredientes.push(item);
	    }

	    //Condicional decrementa a variável contador1, caso o item digitado seja repetido e após a primeira iteração. 
	    if (contador1 != 1 && verifica == false) {
	    	contador1--;
	    	verifica = true;
	    }
 	}

   console.log(ingredientes);
   
</script>

 

 

Share this post


Link to post
Share on other sites

Ok, consegui resolver. O problema situava-se na minha lógica mesmo. Poderia ser feito de forma bem mais simples e sem necessidade de tantos if(s).

 

Cheguei no seguinte código.

 

<script>

  //Vetor que guarda os itens.
  var ingredientes = [];

  //Variável que guarda quantos itens serão adicionados no vetor ingredientes.
  var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

  //Laço para guardar os itens s no vetor.
  for (var contador1 = 1; contador1 <= quantidade; contador1++){
    var item = prompt("Informe o "+contador1+"º item: ");

    //Variável de verificação.
    var verifica = true;

    /*Laço que verifica se o item digitado já existe ou não no vetor ingredientes. Caso exista, exibe alerta e muda o valor da variável  	 verifica para false.*/
    for (var contador2 = 0; contador2 < ingredientes.length; contador2++){
      if (item == ingredientes[contador2]) {
        alert("Item já adicionado!");
        verifica = false;
        contador1--;
        break;
      }
    }

    if (verifica == true){
      ingredientes.push(item);
    }
  }

  console.log(ingredientes);
 
</script>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Marceloely
      Eu gostaria de saber como fazer para preencher automaticamente(pré populado) uma página de pagamentos a partir dos dados inseridos em uma página anterior pelo plugin do contact form 7 do wordpress
       
      Os campos até são preenchidos, mas não com a informação inserido no formulário mas sim com a id mesmo que coloquei na URL
        
      <label> Seu nome
          [text nome id:nome class:nome] </label>
      <label> Seu DDD
      [tel DDD id:DDD class:DDD]</label>
      <label> Seu Celular
      [tel celular id:celular class:celular]</label>
      <label> Seu e-mail
      </label>
      <label> Assunto
          [text* your-subject] </label>
      <label> Sua mensagem (opcional)
          [textarea your-message] </label>
      [submit "Enviar"]
      <script>
       document.addEventListener('wpcf7mailsent', function (Event) {
         location = 'https://pay.hotmart.com/A48773288I?ap=5181&name=id:nome&phoneac=id:ddd&phonenumber=id:celular&email=id:email';
       }, false);
      </script>
    • By Marceloely
      Em alguns países, campanhas de publicidade com objetivo de mensagem no instagram são proibidas, tendo isso em vista gostaria de saber se é possível criar um link onde o usuário caia direto no inbox de outra pessoa no instagram? Como se fosse aqueles links do que cai na conversa do whatsapp.
    • By rafa-martin
      Pessoal, boa noite. 
       
      Estou tendo problemas ao passar um  parâmetro do tipo cursor no java no momento que chamo uma proc no oracle. 
       
      Tenho uma procedure que o parâmetro é um cursor. 
       
      create or replace minhaproce(p_result OUT SYS_REFCURSOR)
       
      begin
        open p_result for select * from tabela;
      end;
       
      Até aqui beleza. 
       
      quando chamo no java não está aceitando o tipo cursor.
       
      @Query(value = "{call minhaproce(?)}", nativeQuery = true)
      Collection<Coche> minhaproce(@Param("p_result") OracleTypes.CURSOR) 
       
      não é aceita. mesmo eu colocando como collection Collection<Coche> listaProcedure(@Param("p_result") List<Coche> p_result2), também não aceita. Agora seu eu fizer o select direto com abaixo retorna. 
       
      @Query(value = "SELECT * FROM tabela", nativeQuery = true)
      Collection<Coche> minhaproce();
       
      Por que funciona fazendo o select direto e não funciona pela procedure? Não acho nada na internet alguma coisa parecida.
    • By KBAlbuquerque
      Estou tentando salvar o nome da imagem no banco de dados com um FormData;
      porém está dando que a imagem está nula no Servidor Node JS da API.
       
      Uso React Native e Express File Upload e Node JS.
       
      Muito obrigada.
       
      Segue o código:
       
      Constantes:
           
      const [nome, setNome] = useState('');       const [marca, setMarca] = useState('');       const [modelo, setModelo] = useState('');       const [foto, setFoto] = useState('');       const [fotoNome, setFotoNome] = useState('');       const [fotoType, setFotoType] = useState('');       const [usuarioId, setUsuarioId] = useState('');  
      Código da API:
         
      const nome = req.body.nome;     const marca = req.body.marca;     const modelo = req.body.modelo;     const foto = req.files;     const usuarioId = req.body.usuario_id;      const file = Date.now().toString() + '_' + foto.myfile;      const filePath = path.join(__dirname, 'public', 'imagens');      foto.mv(`${filePath}/${file}`, err => {           if (err) {               return res.send('Imagem não salva!');           } else {               return res.send('Imagem salva com sucesso!');           }     });  
      Escolhe a Imagem:
           
      const escolhaImagem = (response) => {         if (response.didCancel) {             console.log('Cancelado!');         } else if (response.error) {             console.log("Erro na Imagem: " + response.error);         } else if (response.customButton) {             console.log('Botão customizado' + response.customButton);         } else {             setFoto(response);             setFotoUri(response.uri);             setFotoNome(response.fileName);             setFotoType(response.type);         }     }  
      Função FormData no Cadastro:
              
      const formData = new FormData();         formData.append('nome', nome);         formData.append('marca', marca);         formData.append('modelo', modelo);         formData.append('myfile', fotoNome);         formData.append('usuario_id', usuarioId);         console.log(formData);         const headers = {             method: "post",             body: formData,             headers: {                 "Content-Type": "multipart/form-data",                 "Accept": "application/json",             },         }         await fetch(URL_SERVIDOR + '/salvar-veiculo', headers)             .then(response => response.json())             .then(result => {                 console.log(result)             }).catch((err) => {                 console.log("ERRO: " + err);             });  
    • By Dsdaa
      Olá estou fazendo uma tela de login com flask,html,css e js E estou tentando pegar dados para validar se o usuário está cadastrado ou não Como nenhum usuário tem cadastro, então queria que aparecesse uma mensagem dizendo para o usuário se cadastrar e redirecionar para nova tela - mas isso aí eu me viro -, gostaria mesmo de ajuda para pegar esses dados através do button e onclick pois não estou conseguindo :/ . Irei postar o código .html
      Obs: O arquivo de javascript não tem nada
      <!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> <link rel="stylesheet" href="../Flask-Login/estilo.css"> <title>Login Page</title> <script src="js/scripts.js" defer></script> </head> <body> <div class="row align-items-center h-100 "> <div class="col-8 col-md-3 col-xs-8 mx-auto l-form"> <form id="login-form"> <img class="row mx-auto" src="https://i.imgur.com/RhJpe7c.png" width="150"> <div class="form-group "> <input type="text" name="email" placeholder="Email" class="form-control i-form"> </div> <div class="form-group"> <input type="password" name="password" placeholder="Password" class="form-control i-form"> </div> <div class="form-group"> <button type="button" onclick="userLogin()" class="btn btn-dark btn-md btn-block">Login</button> </div> </form> </div> </div> <script> </script> </body> </html>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.