Exercícios de manipulação do DOM usando Javascript
Logotipo não oficial da JSConf EU 2011.

Exercícios de manipulação do DOM usando Javascript

Nesse exercício de javascript você irá praticar como usar a linguagem de programação para manipular elementos da interface, ou seja, vamos fazer a manipulação do famoso DOM. Sendo assim, recomendo que antes de você tentar resolver esses exercícíos tire um tempinho para revisar o que é o DOM e como manipulá-lo.

Ahhh… quer ver uma breve revisão sobre o DOM? veja nosso post sobre isso.

Mas antes de começar vou explicar pra você que existem algumas regras que acabam tornando o exercício mais interessante. Além disso, eu fiz questão de dividir o post em 3 níveis (iniciante, intermediário e avançado), sendo que os exercícios para iniciante são aqueles mais tranquilos com conceitos bem fáceis, em contraste com os exercícios avançados que já exigem um pouco mais de experiência e habilidade do programador.

Quer aprender Javascript? Conheça nosso Miniguia – Aprenda Javascript em 20 Minutos

Iniciante

Regras dos exercícios

  1. Utilize um arquivo HTML e uma tag script para resolver esse exercício.
  2. Faça do seu jeito, mas lembre-se não esqueça que o objetivo é manipular o DOM, sendo assim, faça seu melhor para fazer todas as operações com a árvore (adição, remoção, busca, etc.)

Exercício 1 – Faça um programa que capture o evento de um input na sua tela e mostre automaticamente a tabuada desse número abaixo.

Exercício 2 – Faça um programa que “pegue” uma lista <ol> no HTML e coloque negrito dinâmicamente a partir de um nome digitado no seu input. Por exemplo

A sua tela possui uma lista de nomes:

  • João
  • Claudio
  • Marcio

Usando um input você digita “Jo”, então o programa no mesmo momento deverá devolver o seguinte resultado:

  • João
  • Claudio
  • Marcio

Intermediário

Exercício 1 – No exemplo abaixo temos uma tabela simples em HTML que representa um calendário:

See the Pen [Exercícios de manipulação do DOM usando Javascript] Exercício intermediário (ex1) – Calendário simples by Computer Science Master (@ComputerScienceMaster) on CodePen.

Faça um programa que:

a) colete do usuário duas datas (usando inputs de data) e altere a cor do “quadrado” dessa data no calendário dinamicamente. Por exemplo, se o usuário escolher a data 01/10/2022 – o quadrado da com o dia 1 (quarta-feira) deve mudar de cor.

b) colete do usuário duas datas (usando inputs de data), a seguir faça: 1) calcule quantos dias existem entre elas e exiba na tela (por exemplo, entre 05/04/2022 – 10/04/2022 → 5 dias); 2) mude a cor dos dias entre as datas selecionadas para a cor azul e as datas selecionadas para a cor laranja.


Avançado

Regras do exercício

  1. Os exercicios Javascript propostos a seguir devem ser resolvidos em arquivos diferentes e recomendo usar também pastas diferentes.
  2. Cada resposta deve estar contida dentro de uma div principal, ou seja, os códigos (inclusive o HTML) deve ser construído usando o JS e inserido na interface usando como referência um div (<div id=”q1″> </div>).
  3. Lembre-se que o componente deve alertar o usuário em caso de erro. 

Nesse exercício vamos usar a terminologia “componente” quando queremos nos referir a um conjunto de elementos HTML, CSS e JS que trabalham juntos para satisfazer uma funcionalidade. Os componentes são na verdade um conceito um pouco mais complexo e são muito usados em frameworks como o React. No entanto, nosso objetivo aqui é apenas entender o “core” dessa ideia e buscar organizar alguns trechos de código que poderiam ser mais facilmente reutilizados em outras aplicações.


Exercício 01 – crie um “componente” que possua:

  • Duas caixas de texto (definir rótulos (label) com um valor mínimo e um valor máximo)
  • Um botão (com o label “contar”)

Nesse componente as caixas de texto tem algumas restrições:

  • Só podem aceitar números.
  • Sempre que um número for digitado, checar se o valor mínimo é menor que o valor máximo.

Quando clicamos no botão o componente deve contar e imprimir quantos números existem entre valor mínimo e valor máximo que sejam múltiplos de 2 e 3 (simultaneamente).

Ahh, tem mais uma coisa… o programa não deverá calcular nada se algum dos numeros não for inserido.


Exercício 02 – crie um componente possua:

  • Uma caixa de texto (que só aceita números e tenha um rótulo (label)).
  • Um botão “calcular”.

Use o número para calcular o fatorial dele e mostrá-lo na tela. Além disso, quando o botão é acionado o componente deve também mostrar tempo necessário para a execução. 


Exercício 03 – Crie um componente que possua:

  • Um botão “criar relatório”

Quando acionado o seu programa deverá imprimir um relatório de resultados da disciplina javascript para 20 alunos, no formato de tabela.

Mas vamos complicar um pouco ne? veja algumas regras adicionais!

  • As notas deverão ser números inteiros entre 0 e 100, criadas aleatoriamente; (dica: use a função math.radom(), dá um google!)
  • Cada aluno deve ser representado por um registro composto por numero e nota
  • Use uma função construtora chamada Aluno. Se você for bem ousado, implemente usando classes;
  • Armazene a nota do aluno como uma variável privada do tipo symbol, use getters e setters para recuperar a informação.
  • Os registros devem ser armazenados em um array;

A impressão do relatório deve ter:

  • Um título;
  • Os resultados mostrados linha a linha no formato “Aluno Nº ?? – Nota ?? [(A/RE)PROVADO]”; e
  • Um rodapé com estatística final no formato “APROVADOS: ??(??%)  |  REPROVADOS: YY (??%)”

Exercício 04 – Crie um componente que possui:

  • 3 caixas de texto (só aceitam números e possuem rótulos (label) com a quantidade de números, valor mínimo e valor máximo)
  • 1 botão calcular

Ao clicar no botão de “calcular”:

  • Um array deve ser criado com a quantidade de números aleatórios (informados pelo usuário) no intervalo informado.
  • Os números devem estar entre valor mínimo e valor máximo (inclusives).
  • Calcular quantidade de números deve ser menor que a soma de valor mínimo e valor máximo.

Exercício 05 – Crie um componente que possui:

  • 3 caixas de texto que só aceitam números e tenha os rótulos (label): lado A, lado B e lado C.
  • 1 botão “calcular”

Quando acionado o botão deve dizer se um triângulo é formado por esses 3 lados. Caso afirmativo, informe se o triângulo equilátero, isósceles ou escaleno. (esse é bem simples né =D ) 


Exercício 06 – Agora vamos criar um último componente mais avançado. Nesse, você precisa criar campos para usuário e login em aplicação(sign up/ sign in).

  • No 1º cenário, antes de estar logado, o visitante se depara com o formulário de login ou de criação de usuário. Se for feito o login com sucesso, o componente deve levar ao cenário 2, se falhar ele deve alertar o usuário e voltar ao início do cenário 1. Se o usuário optar por criar um usuário, o componente deve criar o registro de um novo usuário e voltar para início do cenário 1.
  • No cenário 2, após logado, mostrar apenas um texto de logado no componente e um botão (ou link) para deslogar, retornando ao início do cenário 1.

Deve ser possível criar múltiplos usuários e, se fechada, a página não pode perder os registros de usuários  armazenados.


Desafio!

A ideia principal dos componentes é que você possa “invocá-los” dentro do seu código facilmente, porém da forma que eles foram feitos até agora não torna isso possível, visto que todos os componentes estão armazenados em arquivos diferentes. Sendo assim, o desafio aqui é “juntar” todos esses componentes criados em apenas 1 arquivo principal (HTML) e manter sua organização em diferentes arquivos javascript. É de suma importância também que as variáveis de um componente não sejam visiveis para os demais.

Portanto, quando eu quiser montar uma página com esses componentes eu deveria simplesmente colocar o código HTML:

<div id="ex1"> </div>

Respostas

Essa lista de exercicios javascript está resolvida e disponível em nosso Github!

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e a forma com que ela pode transformar vidas!

Este post tem um comentário

Deixe um comentário

5 × quatro =