Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Tentei mostrar o ano em que cada geração nascia, mas deu undefined no final... Algm consegue me apontar o erro??

<meta charset="UTF-8">

<script>

var ano = 2022; 
var idadeBrasil = ano - 1500;
var geracoes = Math.round(idadeBrasil / 28) - 1;

function pulaLinha() {
    document.write("<br>");
}

function titulo (título) {
    document.write("<h3>" + título + "</h3>");
    pulaLinha();

}
function texto (texto) {
   document.write(texto);
   pulaLinha();
}

function anosGeracoes() {
    for (var i = 1; i <= geracoes; i++) {
        var anos = 1500 + (i * 28);
    document.write(anos + "; ");   
}}

titulo("Quantas gerações tiveram no Brasil desde 1500 até " + ano + "?");
texto("Bom, desde a chegada oficial dos portugueses passaram-se " + idadeBrasil + " anos.");
texto("Se uma nova geração nasce a cada 28 anos, então houve, até o presente momento, " + geracoes + " gerações.");
texto("Foram elas nos anos: ");
texto(anosGeracoes());

</script>
2 respostas
solução!

Fala Gabriel, tudo certo?

Testei a sua função anosGeracoes separadamente e ela retornava tudo certo, sem undefined.

Para isto coloquei um console.log(i, anos, geracoes); dentro da função e acompanhei a impressão das variáveis no loop. Eram 18, calculando os anos perfeitamente e sem o undefined no final.

Percebi então que você chamou essa função dentro de outra texto(anosGeracoes());.. foi aí que o script se perdeu um pouco e confesso que não sei te explicar a função o que ocorreu porém, se você observar as funções estão disparando dois document.write (um no texto() e outra no anosGeracoes().

O que pode ser feito ai?

Você precisará mudar:

DE: texto(anosGeracoes());

PARA: anosGeracoes();

Só com isso o código irá parar de retornar undefined no final e os anos serão impressos na mesma linha.

Se você quiser quiser que os anos sejam impressos um embaixo do outro é só mudar:

DE: document.write(anos + "; ");

PARA: texto(anos + "; ");

Essa alteração é feita dentro da função anosGeracoes()

Espero ter ajudado!

Muito obrigado!!!!!! Salvou demais