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
Contar Resultados
18 Respostas
Este preenchimento será via javascript?
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
Então, se os dados vem do javascript, já pode processar isso tudo antes mesmo de começar a preencher a tabela, não é?
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.
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.
Coloca o bendito código javascript, sem ele, impossível dizer o que está errando, fera.
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.
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%
}
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.
Mesmo que um resultado dê zero, o contador deverá contar essa linha como preenchida.
Então não entendi o problema. Se todas as linhas tem resultado, o número de linhas é o total que você espera.
Qual a condição para não preencher, fera? Basta fazer isso
let contador = 0;
if(condicao_para_preencher) {
contador++;
}
Pois o problema é mesmo esse é que não tenho uma condição para preencher. Ou se meter o nome da label ele conta?
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.
No código que lhe mostrei não vê nada dessa condição né?


