1
resposta

[Sugestão] Fiz dessa forma, demorei pois tive que pesquesar algumas coisas

Fiz tudo na mão, algumas duvidas quando pesquisei no google a ia ja vinha com exemplos parecidos, mas tambem fui na documentação tambem
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/every
https://www.w3schools.com/jsref/jsref_touppercase.asp#:~:text=apply()%20construct()%20defineProperty,()%20trimStart()%20valueOf()
https://www.w3schools.com/jsref/jsref_trim_string.asp

Não tem css, quero deixar para fazer outro momento quando pegar para estudar de fato o css, deixei comentarios propositalmente pois me ajudou a entender caso eu tenha duvidas futuras

Sempre temos algo a melhorar, fico feliz com sugestões, tirando o css kk
html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Media</title>
  </head>
  <body>
    <h1>Calculo de media</h1>
    <h4>Informe a media.</h4>
    <div>
      <div>
        Informe o nome do aluno:
        <input
          type="text"
          id="nomeAluno"
          placeholder="informe o nome do Aluno"
        />
      </div>
      <div>
        Informe as notas
      </div>
      <div>
        Nota 1:
        <input type="number" id="nota1" placeholder="Informe a Nota 1" max="10" min="0" />
      </div>
      <div>
        Nota 2:
        <input type="number" id="nota2" placeholder="Informe a Nota 2" max="10" min="0"/>
      </div>
      <div>
        Nota 3:
        <input type="number" id="nota3" placeholder="Informe a Nota 3"max="10" min="0" />
      </div>
      <div>
        Nota 4:
        <input type="number" id="nota4" placeholder="Informe a Nota 4" max="10" min="0"/>
      </div>
    </div>
    <div>
        <button onclick="submitNota()"> Verificar notas</button>
        <button onclick="novoAluno()" id="novoAluno" disabled>Novo Aluno </button>
    </div>
    <div>
        <h2>Resultado</h2>
    </div>
    <script src="app.js" defer></script>
  </body>
</html>

app.js

function exibirResultado(tag, texto) {
    let campo = document.querySelector(tag);
    campo.innerHTML = texto
}

function calcularMedia(nota1, nota2, nota3, nota4) {
    let media = (nota1 + nota2 + nota3 + nota4) / 4;
    return media.toFixed(1);
}

function verificaAprovacao(totalMedia, nomeTratato) {
    return totalMedia >= 7 ? exibirResultado('h2', `Parabens ${nomeTratato} foi aprovado com media: ${totalMedia}`) : exibirResultado('h2', `Infelizmente  ${nomeTratato} foi REPROVADO com media: ${totalMedia} `)
    // `Parabens ${nomeTratato} foi aprovado com media: ${totalMedia}` : `Infelizmente  ${nomeTratato} foi REPROVADO com media: ${totalMedia} ` 
}

function submitNota() {
    let nomeAluno = document.querySelector('#nomeAluno').value;
    let nota1 = parseFloat(document.querySelector('#nota1').value);
    let nota2 = parseFloat(document.querySelector('#nota2').value);
    let nota3 = parseFloat(document.querySelector('#nota3').value);
    let nota4 = parseFloat(document.querySelector('#nota4').value);

    const nomeTratato = nomeAluno.toUpperCase().trim();

    let verificaNotas = [nota1, nota2, nota3, nota4]
    //uso o every() do js para validar o arry conforme minha condição e tem que retortar todas true
    let notasValidas = verificaNotas.every(nota => !isNaN(nota) && nota >= 0 && nota <= 10);

    if (nomeAluno === "") {
        alert("Favor verificar o Nome!")
        return
    } else if (!notasValidas) {
        alert("Favor verificar  as NOTAS!")
        return
    } else {
        let totalMedia = calcularMedia(nota1, nota2, nota3, nota4)
        console.log(`media: ${parseFloat(totalMedia)}`);

        if (totalMedia) {
            verificaAprovacao(totalMedia, nomeTratato)
            console.log(verificaAprovacao(totalMedia, nomeTratato));
        }
        
        //uso para habilitar o botão de novo aluno que deixei disabilitado no html
        //document.getElementById('novoAluno').removeAttribute('disabled');
        
        //Outra forma de fazer menos verbosa para desabitar o botão;
        document.getElementById('novoAluno').disabled = false
    }
}

function limpaCampoNotas() {
    let limpaCampoInput = document.querySelectorAll('input');

    //faço o forEach para andar por todos os campos 'input' declarados acima em vez de declarar assim 
    // document.querySelector('#nomeAluno').value = '';
    // document.querySelector('#nota1').value = '';
    // document.querySelector('#nota2').value = '';
    limpaCampoInput.forEach(campo => {
        campo.value = '';
    });
}

function novoAluno() {
    limpaCampoNotas()
    //document.getElementById('novoAluno').setAttribute('disabled', false);
    //outra forma de fazer que tambbem funciona
    document.getElementById('novoAluno').disabled = true
}
1 resposta

Tentei usar as funções sugeridas na atividade...