Tenho a seguinte function
o que percorreArray retornar a function anonima irá usar...
function calculaTodosImcs(){
var trsPacientes = document.getElementsByClassName("paciente");
percorreArray(trsPacientes, function(trPaciente){
var trImc = trPaciente.getElementsByClassName("info-imc")[0];
constroi_pacientes(trPaciente)
var imc = paciente.pegaImc();
trImc.textContent = imc;
console.log(imc);
});
}
Aqui esta a parte do html :
<button id="calcula-imcs" onclick="calculaTodosImcs()" class="botao">Calcular Imcs</button>
</section>
<section>
<h2>Adicionar novo paciente</h2>
<form>
<fieldset>
<label for="nome">Nome:</label>
<input id="campo-nome" type="text" placeholder="digite o nome do seu paciente">
</fieldset>
<fieldset class="campo-medio">
<label for="peso">Peso:</label>
<input id="campo-peso" type="text" placeholder="digite o peso do seu paciente">
</fieldset>
<fieldset class="campo-medio">
<label for="altura">Altura:</label>
<input id="campo-altura" type="text" placeholder="digite a altura do seu paciente">
</fieldset>
<button id="adicionar-paciente" class="botao bto-principal">Adicionar</button>
</form>
</section>
</main>
<script src="constroi-paciente.js"></script>
<script src="percorre.js"></script>
<script src="calcula-imc.js"></script>
<script src="imprime.js"></script>
function constroi_pacientes(trPaciente){
var tdNome = trPaciente.getElementsByClassName("info-nome")[0];
var tdPeso = trPaciente.getElementsByClassName("info-peso")[0];
var tdAltura = trPaciente.getElementsByClassName("info-altura")[0];
var tdImc = trPaciente.getElementsByClassName("info-imc")[0];
var paciente = { nome : tdNome.textContent,
peso : tdPeso.textContent,
altura : tdAltura.textContent,
pegaImc : function(){
if (this.altura != 0) {
//altura > 0
var imcDoPaciente = this.peso/(this.altura*this.altura);
return imcDoPaciente;
} else {
console.log("Nao se pode dividir por 0");
//nao faz sentido dividir por altura negativa
}
}
};
return paciente;
}
var trsPacientes = document.getElementsByClassName("paciente");
for (posicaoDoTrAtual = 0; posicaoDoTrAtual <= trsPacientes.length - 1; posicaoDoTrAtual++) {
var trPaciente = trsPacientes[posicaoDoTrAtual];
var trImc = trPaciente.getElementsByClassName("info-imc")[0];
var paciente = constroi_pacientes(trPaciente);
var imc = paciente.pegaImc();
trImc.textContent = imc;
console.log(imc);
}
========================
function percorreArray(trsPacientes, comportamento){
for (posicaoDoTrAtual = 0; posicaoDoTrAtual <= trsPacientes.length - 1; posicaoDoTrAtual++) {
var trPaciente = trsPacientes[posicaoDoTrAtual];
comportamento(trPaciente);
}
}
===========================
function calculaTodosImcs(){
var trsPacientes = document.getElementsByClassName("paciente");
percorreArray(trsPacientes, function(trPaciente){
var trImc = trPaciente.getElementsByClassName("info-imc")[0];
constroi_pacientes(trPaciente)
var imc = paciente.pegaImc();
trImc.textContent = imc;
console.log(imc);
});
}
======================================
var trsPacientes = document.getElementsByClassName("paciente");
percorreArray(trsPacientes, function (trPaciente){
//constroi_pacientes(trPaciente)
for (posicaoDoTrAtual = 0; posicaoDoTrAtual <= trsPacientes.length - 1; posicaoDoTrAtual++) {
var trPaciente = trsPacientes[posicaoDoTrAtual];
var paciente = constroi_pacientes(trPaciente);
console.log(paciente.nome);
}
});
O problema é que ao carregar a pagina ele mostra imcs calculados e ao clicar no botao ele altera esses valores, ou seja nao ta subindo zerado no começo, seria por que tem outras functions que fazem isso, como constroi paciente logo no começo com o for ?