Contar Resultados

18 respostas
javascript
J

Boas gente, tenho o seguinte problema: Tenho uma tabela que vai ser preenchida pelo utilizador e no final de cada linha dá um resultado. Eu queria contar quantos resultados tenho, apenas contar, não quero somar os resultados. Como posso fazer isto utilizando Javascript? Obrigado

18 Respostas

D

Este preenchimento será via javascript?

J

A tabela é composta pro exemplo por esta linha, mas no total tenho 12 linhas:

<th>Objetivo 1</th>
                                    <th>
                                        <div class="input-field col s12">
                                            <input id="DataInicio" type = "date" class = "datepicker" name = "DataInicio" />
                                            <label for="datainicio"></label>
                                        </div>
                                    </th>
                                    <th>
                                        <div class="input-field col s12">
                                           <input id="DataFim" type = "date" class = "datepicker" name = "DataFim" />
                                            <label for="datafim"></label>
                                        </div>
                                    </th>
                                    <th>
                                        <div class="input-field col s12">
                                            <input id="avInicial1" type="text" class="validate"
                                                   autocomplete="off" name="AvInicial"
                                                   onchange="calculaResultado(1)">
                                            <label for="avinicial"></label>
                                        </div>
                                    </th>
                                    <th>
                                        <div class="input-field col s12">
                                            <input id="meta1" type="text" class="validate" autocomplete="off"
                                                   name="Meta" onchange="calculaResultado(1)">
                                            <label for="meta"></label>
                                        </div>
                                    </th>
                                    <th>
                                        <div class="input-field col s12">
                                            <input id="AvIntercalar" type="text" class="validate"
                                                   autocomplete="off" name="AvIntercalar">
                                            <label for="avintercalar"></label>
                                        </div>
                                    </th>
                                    <th>
                                        <div class="input-field col s12">
                                            <input id="avFinal1" type="text" class="validate"
                                                   autocomplete="off" name="Avfinal" onchange="calculaResultado(1)">
                                            <label for="avfinal"></label> 
                                        </div>
                                    </th>
                                    <th>
                                        <div class="input-field col s12">
                                            <input disabled id="resultado1" />
                                        </div>
                                    </th>
                                </tr>

E agora como repara na última coluna tenho o resultado, que vai receber uma fórmula do javascript. O que eu queria era que ao fim do preenchimento da tabela (Não é obrigatório o utilizador preencher as 12 linhas) em baixo ele contasse quantos resultados tenho. Mas o que estou a fazer até agora ele só me está a somar os resultados e não está a contar

D

Então, se os dados vem do javascript, já pode processar isso tudo antes mesmo de começar a preencher a tabela, não é?

J

Sim, a tabela é esta:


Onde diz count é esses valores que eu quero contar quantos obtiver, sem ser somar. Se todas as linhas forem preenchidas é suposto naquele quadradinho aparecer 3, se só preencher uma linha deverá aparecer 1. Entende?

D

Então, estes resultados serão processados pelo javascript. Se sim, você só precisa verificar se existe valor no count para a linha específica e somar 1 ao elemento que armazena esta informação.

J

J

O problema é o meu primeiro trabalho com o javascript não estou a conseguir chamar os nomes e arranjar uma maneira de contar, está sempre a somar.

D

Coloca o bendito código javascript, sem ele, impossível dizer o que está errando, fera.

J
O meu javascript de contas está assim:

function calculaResultado(x){

console.log(x);

a = document.getElementById(‘avInicial’ + x).value;

b = document.getElementById(‘meta’ + x).value;

c = document.getElementById(‘avFinal’ + x).value;
let resultado = ((c*100)/b);
                
        if(b === c){
            resultado = 100; //100%
        } else if (a > c) {
            resultado = 0; // 0%
        } 
        else {
            resultado = parseInt(resultado);
        }
                
        document.getElementById('resultado' + x).value =  resultado; 

        calculaMediaFinal();
        ContarObjetivos();
    }

    function calculaMediaFinal () {
    var soma = 0;
    for(var i = 1; i <= 2; i++) { 
        soma += parseInt(document.getElementById('resultado' + i).value, 10); 
    }
    var media = soma / 2;

    var inputCuboMedia = document.getElementById('ConcretizaObj');
    inputCuboMedia.value = parseInt(media, 10);
    }

    function ContarObjetivos(){
        var soma = 0;
        for(var i = 1; i <= 3; i++) { 
            count += parseInt(document.getElementById('resultado' + i).value, 10); 
        }

        var inputCuboCount = document.getElementById('ObjDefinidos').length;
        inputCuboMedia.value = parseInt(count, 10);
    }

A função ContarObjetivos é a minha tentativa.

D

Você quer contar apenas os resultados, não é isso? Qual a condição para o resultado ser contado, ser igual a 100%? Então você não precisa desta outra function, bastaria ter um contador declarado antes de verificar o resultado e no if onde seta o resultado em 100%, incrementar o contador

let contador = 0;
if(b === c){
    resultado = 100; //100%
    contador++;  //Aqui você incrementa o contador, simples.
} else if (a > c) {
    resultado = 0; // 0%
}
J

Mas ele tem de contar até os que dão zero, tem de contar sempre que uma linha for preenchida independentemente do resultado. Ou seja, eu só quero saber quantas linhas é que o utilizador usou.

J

Mesmo que um resultado dê zero, o contador deverá contar essa linha como preenchida.

D

Então não entendi o problema. Se todas as linhas tem resultado, o número de linhas é o total que você espera.

J


neste exemplo que fiz eu tenho 4 linhas, mas apenas 3 linhas é que estão preenchidas. Então o que eu quero é que na caixa dos Objetivos Definidos apareça o 3.

D

Qual a condição para não preencher, fera? Basta fazer isso

let contador = 0;
if(condicao_para_preencher) {
    contador++;
}
J

Pois o problema é mesmo esse é que não tenho uma condição para preencher. Ou se meter o nome da label ele conta?

D

Cara, se não tem condição para preencher, todas são preenchidas. Alguma forma de definir se você vai ou não colocar o valor lá existe. Senão, esquece o contador.

J

No código que lhe mostrei não vê nada dessa condição né?

Criado 30 de maio de 2018
Ultima resposta 30 de mai. de 2018
Respostas 18
Participantes 2