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

ajuda a terminar o codigo ?

Preciso que o value pegue o numero dos checkbox marcados e no fim ao clicar calcular precisava q me desse a soma dos valroes e diiscontasse o valor do desconto

<! DOCTYPE html>
<head>
<link rel="stylesheet" type="text/css" href="dedo.css"/>
<meta charset="UTF-8">

<figure>
<img src="cheddar.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="12.90"> Burger <INPUT class="trio" TYPE="checkbox" NAME="OPCAO" VALUE="15.90"> Trio </figcaption>
</figure>
<figure>
<img src="chicken.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="11.90"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="14.90"> Trio  </figcaption>
</figure>
<figure>
<img src="frango_duplo.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="10.80"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="13.80"> Trio  </figcaption>
</figure>
<figure>
<img src="moça_burger.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="10.90"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="14.90"> Trio  </figcaption>
</figure>
<figure>
<img src="moça_frango.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="8.60"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="11.60"> Trio  </figcaption>
</figure>
<figure>
<img src="moça_grill.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="13.20"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="16.60"> Trio  </figcaption>
</figure>
<figure>
<img src="moça_kids.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="6.90"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="11.90"> Trio  </figcaption>
</figure>
<figure>
<img src="moça1.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="16.40"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="18.80"> Trio  </figcaption>
</figure>
<figure>
<img src="moça2.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="16.40"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="18.90"> Trio  </figcaption>
</figure>
<figure>
<img src="moça3.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="14.60"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="18.90"> Trio  </figcaption>
</figure>
<figure>
<img src="philadelphia.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="12.90"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="15.90"> Trio  </figcaption>
</figure>
<figure>
<img src="saladabacon.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="9.90"> Burger <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="12.90"> Trio  </figcaption>
</figure>
<figure>
<img src="salgados.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="10"> 25 Un <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="17"> 50 Un <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="22"> 75 Un <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="28.90"> 100 Un </figcaption>
</figure>
<figure>
<img src="pizza.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="32.90"> Média <INPUT TYPE="checkbox" NAME="OPCAO" VALUE="36.90"> Grande  </figcaption>
</figure>
<figure>
<img src="batata.jpg" width="250px" height="200px">
<figcaption><INPUT TYPE="checkbox" NAME="OPCAO" VALUE="9.50"> Outros de R$ 9,50</figcaption>
</figure>

<section id="java">
<p><center>desconto de :</p>
<input type="text" id="desconto" />
<input type="submit" height="150px" value="Calcular" id="adivinhar"></center>
</section>
</head>
<body>
</body>
<script>
    var aChk = document.getElementsByName("OPCAO");

for (var i=0;i<aChk.lenght;i++){ // Corre todas as checkboxes
     if (aChk[i].checked == true){ // Se estiver seleccionada
         valor = aChk[i].value; // O valor da seleccionada
     }
}

    var caixaDoNumero = document.getElementById("desconto").value;
    var achou = false;
    var n = 0;

    var botaoClicado = function () {
        n ++;

        if (achou == true) {
            alert("parabens")
        } else {

            alert("cliente numero: "+ n +"  ,  "+"valor do pedido: "+ aChk[i].value);
            window.print();

        }
    }
    var botaoAdivinhar = document.getElementById("adivinhar");
    botaoAdivinhar.onclick = botaoClicado;
</script>
6 respostas

Olá Augusto, tudo bem?

Poxa cara vou te dar umas dicas de como proceder e vou tentar te ajudar com o possível, mas sem resolver para você pois essa parte de lógica você tem que exercitar...

Vamos lá...

Preciso que o value pegue o numero dos checkbox marcados e no fim ao clicar calcular precisava q me desse a soma dos valroes e diiscontasse o valor do desconto

Vamos por partes.

Crie uma função, por exemplo calcular e faça com que ela seja atribuída ao clique do botão.

Dentro dela crie uma variável total e atribua-a a uma função que retorna a soma dos produtos checados ( a que você fez esta quase certa, faltam apenas uns detalhes)

Crie uma outra função, geraDesconto, que você passe o valor da soma dos produtos e ela retorna a soma dos produtos menos o valor do desconto.

Algo mais ou menos assim...

var calcular = function() {
  var total = somaProdutos();
  total = geraDesconto( total );
  alert( total );
}

Conselho que eu te dou, quebre os objetivos em objetivos menores e vá concluindo pequenas instruções até juntar todas essas pequenas instruções, não peça soluções pois se você ficar pegando códigos prontos você não vai conseguir desenvolver a linha de raciocínio...

Espero ter ajudado, Grande Abraço

ok, mas n to conseguindo fazer ele checar somente as selecionadas

Se no seu loop (for) você fizer um

console.log( aChk[i] );

Você vai poder ver detalhes sobre cada checkbox.

No seu código você não consegue somar os produtos pois cada vez que ele encontra um checkbox selecionado ele substitui o valor atribuindo anteriormente pelo valor do selecionado atual. você teria que inicializar uma variável soma, valor o nome que desejar e ir incrementando os valores a ela.

var aChk = document.getElementsByName("OPCAO");

for (var i=0;i<aChk.lenght;i++){ // Corre todas as checkboxes
     if (aChk[i].checked == true){ // Se estiver seleccionada
         valor = aChk[i].value; // O valor da seleccionada
     }
}

Eu fiz uma versão aqui toda baseada no seu primeiro código.

var somaProdutos = function() {
  // Pega todos os checkoboxes e armazena em um formato de array chamado produtos.
  var produtos = document.getElementsByName( 'OPCAO' );

  //Inicializa uma variavel soma com o valor inicial de 0
  var soma = 0;

  // Percorre todos os itens do array produtos
  for( var i = 0; i < produtos.length; i++ ) {

    // verifica se o checkbox na posição "i" do array esta checked
    if ( produtos[i].checked ) {

      // Se o mesmo estver checked, pega o value do checkbox na posição "i" e soma o valor ao valor da variável soma. 
      soma += parseFloat( produtos[i].value );

    };
  }

  // retorna a soma dos valores dos produtos
  return soma;
}

nao adiantou ele continua pegano o valor do primeiro checkbox sem verificar nem se esta marcado

Augusto é necessário também fazer umas simples alterações no seu código e do Marcos para funcionar como você deseja, testei aqui com o do Marcos e deu perfeitamente certo, só que fiz as seguintes alterações nos códigos.

<script>
    var n = 0;
    var caixaDoNumero = document.getElementById("desconto").value;

    var somaProdutos = function() {
    var n++ // Contador de pedidos

    // Pega todos os checkoboxes e armazena em um formato de array chamado produtos.
    var produtos = document.getElementsByName( 'OPCAO' );
    //Inicializa uma variavel soma com o valor inicial de 0
    var soma = 0;
    // Percorre todos os itens do array produtos
    for( var i = 0; i < produtos.length; i++ ) {
    // verifica se o checkbox na posição "i" do array esta checked
    if ( produtos[i].checked ) {
    // Se o mesmo estver checked, pega o value do checkbox na posição "i" e soma o valor ao valor da variável soma.
    soma += parseFloat( produtos[i].value );
    };
    }
    // retorna a soma dos valores dos produtos
    alert("cliente numero: "+ n +"  ,  "+"valor do pedido: "+ soma); // Seu antigo alert apenas substituindo a array aChk[i].value pela variável soma
    //return soma; Retirado pois não queremos que retorne o valor da soma diretamente na mesma função.
    window.print(); //impressão
    }
    var botaoAdivinhar = document.getElementById("adivinhar");
    botaoAdivinhar.onclick = somaProdutos;
</script>

Augusto espero que tenha entendido a solução de Marcos para seu problema e continue estudando :)

solução!

Cometi um erro desculpe passou despercebido: No lugar de:

var n++ // Contador de pedidos

Não é uma variável e sim apenas um incremento na função,

n++ // Contador de pedidos