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 Rodrigo Biaggio
      Senhores, conseguem me ajudar a evoluir na questão abaixo??
       
      Tenho esse código simples, aonde chamo uma API e percorro um array e pego apenas um campo e faço a soma. Só que preciso retornar além do campo "consumedHostUnits" e o campo "name", conforme print.
       

       
      Alguém poderia me dar uma luz, como fazer isso? 
       
      O resultado seria mostrando 
       
      Name: APIGateway | ConsumedHostsUnits: 2
       
      Segue o HTML:
       
      <!DOCTYPE html> <html lang="pt-br"> <title>API Management</title> <head> <meta charset="8"> </head> <body> <script> var urlapi = ''; function fazerRequisicao(){ var url = urlapi + document.getElementById('hostgroup').value; //var url = urlapi; var xhttp = new XMLHttpRequest(); xhttp.open("GET", url, false); xhttp.send(); var arrayElements = xhttp.responseText.split(','); var i; var sumComsumed = 0.0; for (i = 0; i < arrayElements.length; i++) { if(arrayElements[i].includes("consumedHostUnits")) { sumComsumed = sumComsumed + +arrayElements[i].split(":")[1]; } } document.getElementById("div-responsetext").innerHTML = sumComsumed; } </script> <button onclick="fazerRequisicao();">Pesquisar</button> <input type="text" id="hostgroup" style="width: 100px;"> <hr/> <div id="div-responsetext"></div> </body> </html> Obrigado.
       
    • By Deivid Santos
      Salve galera, estou quebrando a cabeça aqui, já pesquisei mas não achei nada sobre.
      Eu tenho alguns dados que busco no banco de dados e mostro em um datagrid, além do CRUD que implantei eu preciso ter a opção de mudar as posições no banco. Preciso fazer isso pois elas são informações que vão para um telão. e ele segue uma ordem na mostragem dos dados.
      Teria alguma forma de arrastar a linha do grid e assim ele mudar o ID do mesmo conforme a posição que ficaria e assim os outros também seriam atualizados?
      Como exemplo segue uma imagem de como ele funciona. por exemplo eu movimento o ID 1 na posição abaixo do ID 3, assim o ID 2 e 3 se tornariam 1 e 2 com essa movimentação e o que era 1 se torna 3.

       
      Agradeço qualquer ajuda que puder.
       
       
    • By juliosertori
      Olá boa noite, tudo bem galera?
       
      Tenho um input:
      <input type="text" value="0" name="qtdProds" id="qtdProds" class="form-control" onkeyup="atualizaTotalPrecos(this);" required /> E quando ele está ONBLUR, funciona o seguinte script:
      function atualizaTotalPrecos(sel){ var nameInput = sel.name; var IdNameProds = parseInt(nameInput.match(/\d/g).join('')); var valor = $('input[name="produtos_pdv['+IdNameProds+'][qtdProds]"]').val(); var custo = $('input[name="produtos_pdv['+IdNameProds+'][custoProds]"]').val(); var totalCusto = valor*custo; $("[name='produtos_pdv["+IdNameProds+"][custoTotalProds]']").val(totalCusto); //$("[name='totalPedidoDesconto']").val(totalCusto); var descontoPedido = $("#descontoPedido").maskMoney('unmasked')[0]; var total = 0; $('.somaTotal').each(function(){ var valor = Number($(this).val()); if (!isNaN(valor)) total += valor; }); var totalDescontado = total - descontoPedido; //alert(totalDescontado); $(".SomaTotalPrecos").maskMoney('mask', total); $(".totalpedidos").maskMoney('mask', totalDescontado); //////////////// var totalCusto = 0; $('.somaCustoTotal').each(function(){ var valor = Number($(this).val()); if (!isNaN(valor)) totalCusto += valor; }); $(".SomaTotalCustos").maskMoney('mask', totalCusto); };  
      Onde atualizo o campo .SomaTotalPrecos, funciona perfeitamente.
       
      Mas quando troco para Onkeyup, e inserir 1 por exemplo, primeiro ele preenche o campo com 0, e da segunda vez, ele atualiza para a primeira vez, ou seja, 1.
       
      Ex: coloco o valor de R$ 10,00 e na quantidade coloco 1, ele preenche o campo com 0, depois se insiro 2, ai ele preenche o campo com a quantidade anterior, ou seja 1xR$ 10,00
       
    • By AndersonWS
      Tenho um código que aparentemente estaria certo porém ele "trava" e  não mostra os resultados.
      Creio que o problema está na parte de "buscar" o json apenas.
      Segue o código:
      <style>.carregando{color:#666;display:none;}</style> <div class="col-md-7"> <label for="empreendimento">Escolha o empreendimento</label> <select name="empreendimento" class="form-control" required="" id="empreendimento"> <option value="">-- Escolha um empreendimento --</option> <?php $sqlVs = "SELECT `id`,`nm` FROM `empreend` WHERE `dis`='1' ORDER BY `nm` ASC"; $queryVs = mysqli_query($link, $sqlVs); $total = mysqli_num_rows($queryVs); if ($total > 0){ while($r = mysqli_fetch_array($queryVs)){ $id = $r['id']; $nm = $r['nm']; echo '<option value="'.$id.'">'.$nm.'</option>'; } } else { echo '<option value="0">Não há empreendimentos disponíveis</option>'; } ?> </select> </div> <div class="col-md-5"> <label for="unidades">Unidade</label> <span class="carregando">Aguarde, carregando...</span> <select name="unidades" id="unidades" class="form-control" required=""> <option value="">-- Escolha uma unidade --</option> </select> </div> <script src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load('jquery', '1.3'); </script> <script type="text/javascript"> $(function(){ $('#empreendimento').change(function(){ if( $(this).val() ) { $('#unidades').hide(); $('.carregando').show(); $.getJSON('ajax/busca_emp.php?search=',{empreendimento: $(this).val(), ajax: 'true'}, function(j){ var options = '<option value=""></option>'; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].id + '">' + j[i].nm + '</option>'; } $('#unidades').html(options).show(); $('.carregando').hide(); }); } else { $('#unidades').html('<option value="">– Escolha um empreendimento –</option>'); } }); }); </script> if(!empty($_GET["search"])) { $empreendimento = trim($_GET["search"]); $empreendimento = mysqli_real_escape_string($link, $empreendimento); $unidades = array(); $sqlVs = "SELECT `id`,`nm` FROM `empreendimento` WHERE `id`='$empreendimento' ORDER BY `nm` ASC"; $queryVs = mysqli_query($link, $sqlVs); $total = mysqli_num_rows($queryVs); if ($total > 0){ while($r = mysqli_fetch_array($queryVs)){ $unidades[] = array( 'id' => $r['id'], 'nm' => $r['nm'], ); } } echo( json_encode( $unidades ) ); } else { echo 'vazio'; } Ele trava e fica apenas mostrando:
      Aguarde, carregando...
       
      Olhei o json e ele está recuperando:
      [{"id":"1","nm":"Condominio"}]
    • By phpcoder
      OLÁ, gostaria de pegar os valores desses input e enviar no formulario apenas por um unico input hidden, um input com id diferente. Meu codigo está assim, gostaria de saber se é isso mesmo ou o que falta.
      input class="gp_input_grid" id="cod1" name="cod1" autofocus onKeyUp="javascript:pulacampo('cod1','cod2')" maxlength="1" type="tel" value="">
      input class="gp_input_grid" id="cod2" name="cod2" maxlength="1" onKeyUp="javascript:pulacampo('cod2','cod3')" type="tel" value=""
        
      input class="gp_input_grid" id="cod3" name="cod3" maxlength="1" onKeyUp="javascript:pulacampo('cod3','cod4')" type="tel" value="">
        input class="gp_input_grid" id="cod4" name="cod4" maxlength="1" onKeyUp="javascript:pulacampo('cod4','cod5')" type="tel" value=""
        input class="gp_input_grid" id="cod5" name="cod5" maxlength="1" onKeyUp="javascript:pulacampo('cod5','cod6')" type="tel" value=""
        
      input class="gp_input_grid" id="cod6" name="cod6" maxlength="1" onKeyUp="javascript:pulacampo('cod6','pulou')" type="tel" value=""
       
       input type="hidden" name="dados" id="dados" value="<?=$_POST['cod1']; ?><?=$_POST['cod2']; ?><?=$_POST['cod3']; ?><?=$_POST['cod4']; ?>"

      GOSTARIA DE SABER SE É ISSO MESMO, OU O QUE FALTA. 
×

Important Information

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