3
respostas

JS: como repetir o cálculo usando o id dos objetos HTML?

Preciso repetir o cálculo para outras linhas da tabela onde estão os outros input box, tentei fazer usando o onClick para pegar o id do input box, porém não consigo importar trazer da outra função que pega o id do elemento. Gostaria de usar o id do elemento como se fosse uma variável

function retornaCelula(idElemento){

return;
}

// prepara constantes
const janela = 2 * 1.2;
const porta = 0.8 * 1.9;
const areaJanelaPorta = janela * porta

// variavel para controle de erros antes de submeter
let qtdeErros = 0;



function areasParede() {


    let td_altura = document.getElementById("altura_p1");
    let altura = td_altura.value;

    let td_largura = document.getElementById("largura_p1");
    let largura = td_largura.value;

    let areaValor = document.getElementById("area_p1");

    let area = altura * largura;

    //valida se as areas estao dentro dos requisitos
    if (altura <= 1 || altura > 15 || largura <= 1 || largura > 15) {

        areaValor.classList.add('table-warning');
        areaValor.innerHTML = "comprimentos entre 1 e 15m apenas";
        qtdeErros++;
        console.log("erros:" + qtdeErros);
    }
    else {
        areaValor.classList.remove('table-warning');
        areaValor.innerHTML = area + "m²";
        qtdeErros = 0;
        console.log(area);
        return area;

    }

}

// inicio calculo de area das portas e janelas


function areaPortaJanelas() {

    let areaParedes = areasParede();

    let qtdePortas = document.getElementById("porta_p1").value;
    let areaPortas = qtdePortas * porta;
    let qtdeJanelas = document.getElementById("janela_p1").value;
    let areaJanelas = qtdeJanelas * janela;

    let areaTotalPortaJanelas = areaJanelas + areaPortas;

    let areaValor2 = document.getElementById("areaValor2");


    // verifica as regras de negocio para janelas
    if (areaTotalPortaJanelas > areaParedes / 2) {

        areaValor2.classList.add('table-warning');
        areaValor2.innerHTML = 'area total de portas e janelas excede 50% da parede';
        qtdeErros++;

    } else {
        areaValor2.classList.remove('table-warning');
        areaValor2.innerHTML = areaTotalPortaJanelas + "m²";
        qtdeErros = 0;
    }



    let areaRestante = document.getElementById("areaPintura1");
    areaRestante.innerHTML = Math.round(areaParedes - areaTotalPortaJanelas) + "m²";
}
3 respostas

Oi Gustavo tudo bem?

Poderia colocar a pasta do seu projeto no github por gentileza. E também colar aqui o link da aula que pede essa atividade.

não é exercício daqui, é um exercício que peguei fora

https://github.com/gusnd/tintasjs

Coloquei o gatilho da função no oninput dentro da tag tr passando a própria tag pra dentro da função usando o this. Ao invés de usar ids para referenciar usei a estrutura de árvore do DOM. Pode estourar alguns erros que foram programados para dar no console.log mas nada grave, só ajustar na validação dos erros.

Subi um pull request pro seu repositório: https://github.com/gusnd/tintasjs/pull/1

Espero ter ajudado!!!