Material JavaScript
Material JavaScript
1
HTML, CSS e JavaScript
• HTML para definir o conteúdo das páginas da web
2
O que JavaScript?
3
Você sabia?
• JavaScript e Java são completamente
diferentes.
• O site
• https://www.w3schools.com/js/default.asp
mantém um guia de referência completo da
linguagem JavaScript e está em constante
atualização. Além disso, apresenta exemplos das
propriedades e métodos.
5
Onde colocar os códigos JavaScript?
Dentro da tag HEAD
<head>
<script>
window.onload = funcao01;
function funcao01() {
document.getElementById("id02").innerHTML = "Inseri o parágrafo 1"
}
</script>
</head>
<body>
<h1 id="id01"></h1>
<p id="id02"></p>
<p id="id03"></p>
<script>
document.getElementById("id01").innerHTML = "Inseri o título";
</script>
No corpo da página
<script src="exemplo.js"></script>
</body> No arquivo externo
Colocar scripts na parte inferior do elemento
// Arquivo externo exemplo.js
<body> melhora a velocidade de exibição,
porque a interpretação do script torna a document.getElementById("id03").innerHTML = "Inseri o parágrafo 2"
exibição mais lenta. 6
Onde colocar os códigos JavaScript?
<head>
<script>
window.onload = funcao01;
function funcao01() {
document.getElementById("id02").innerHTML = "Inseri o parágrafo 1"
}
</script>
</head>
<body>
<h1 id="id01"></h1>
<p id="id02"></p>
<p id="id03"></p>
<script>
document.getElementById("id01").innerHTML = "Inseri o título";
</script>
<script src="exemplo.js"></script>
</body>
8
Exibindo dados de diferentes
maneiras
• Escrevendo em um elemento HTML,
usando innerHTML.
9
Exibindo dados de diferentes
maneiras
<h1 id="id01"></h1>
<script>
document.getElementById("id01").innerHTML =
"Teste innerHTML";
document.write("Teste write");
window.alert("Teste alert");
console.log("Teste console");
Tecla F12
</script>
10
Comentários
11
Variáveis
• São conteineres para armazenar valores de dados.
12
Variáveis
• Declarações
13
Variáveis
14
Variáveis – outras características
• Uma variável declarada sem valor terá o valor
undefined.
15
Objetos e matrizes constantes
Matriz
• A palavra-chave const é um
pouco enganosa. Visão do programador
A E I O U
• NÃO pode: I
A
• Reatribuir um valor constante O
null
• Pode:
• Alterar os elementos da matriz
constante Objeto é semelhante a matriz mas é composto
• Alterar as propriedades do por propriedades (par de nome:valor).
objeto constante
16
Operadores
▪Operador unário
operador <operando> ou <operando> operador
X++
▪Operador binário:
<operando1> operador <operando2>
X+Y
17
Operadores Aritméticos
Operador Descrição Exemplo
Módulo (%) Operador binário. Retorna o 12 % 5 retorna 2.
inteiro restante da divisão dos
dois operandos
Incremento (++) Operador unário. Adiciona x++, se x é 3, então retorna 4.
uma unidade ao seu
operando.
Decremento (--) Operador unário. Subtrai x--, se x é 3, então retorna 2.
uma unidade de seu
operando.
Negação (-) Operador unário. Se x é 3, então –x retorna -3.
Retorna a negação de
seu operando.
Adição (+) Operador unário. Tenta converter +”3” retorna 3.
o operando em um número +true retorna 1.
sempre que possível
Operador de exponenciação (**) Calcula base^expoente 2**3 retorna 8.
18
Operadores de Atribuição
Nome Operador encurtado Significado
Atribuição x=y x= y
Atribuição de adição
(se usado com string faz a função x += y x=x+y
de concatenação)
Atribuição de subtração x -= y x=x-y
Atribuição de multiplicação x *= y x=x*y
Atribuição de divisão x /= y x=x/y
Atribuição de resto x %= y x=x%y
Atribuição exponencial x **= y x = x ** y
19
Operadores de Comparação
• Igualdade (==)
• Se os valores forem iguais retorna verdadeiro
• Primero converte o operando se não for do mesmo tipo, então
aplica a comparação estrita.
• Desigualdade (!=)
• Retorna verdadeiro se os valores dos operandos
são diferentes
• Se os operando não forem do mesmo tipo, primeiro converte os
tipos e depois realiza a comparação.
21
Operadores de Comparação
22
Operadores de Comparação
23
Operadores Relacionais
Operador Sintaxe
5 >= 1 //verdade
Maior ou igual (>=)
3 >= 3 //verdade
2 <= 3 //verdade
Menor ou igual (<=)
2 <= 2 //verdade
24
Operadores Lógicos
Operador Utilização Descrição
Negação lógica.
Retorna falso caso a expressão possa
NOT (!) !expr
ser convertida para verdadeiro, caso
contrário, retorna verdadeiro.
25
Operadores Lógicos
26
Operadores Lógicos
27
Operadores Lógicos
28
Operadores de tipo JavaScript
Operador Descrição
29
Tipos de dados
• JavaScript tem tipos dinâmicos. Isso significa que a mesma variável pode ser
usada para armazenar diferentes tipos de dados.
• Undefined: uma variável sem valor tem o valor undefined. O tipo também é undefined.
• Números : 42 ou 3.14159.
30
Tipos de dados - Matrizes
• Variáveis JavaScript
podem ser objetos.
var myFunction = function () { };
• Arrays (matrizes) são var hoje = new Date();
tipos especiais de const carros = ["Fusca", "Passat", "Belina"];
objetos.
const myArray = [];
myArray[0] = hoje; //objeto
• Pode ter variáveis de myArray[1] = myFunction; //função
tipos diferentes no myArray[2] = carros; //matriz
mesmo Array:
• objetos
• funções
• arrays
31
Tipos de dados - Objetos
• Objetos podem conter muitos valores
const person = {
firstName: "John",
lastName : "Doe", • Valores são escritos como pares
id : 5566, nome:valor
fullName : function() {
return this.firstName + “ " + this.lastName;
} • Os pares name:values são chamados de
propriedades
};
• Acessando Propriedades
person.lastName;
ou
person["lastName"];
• Acessando métodos
name = person.fullName();
32
Quando usar matrizes ou objetos?
Muitas linguagens de programação suportam arrays com
índices nomeados. Arrays com índices nomeados são
chamados de arrays associativos (ou hashes). JavaScript não
suporta arrays associativos.
33
Funções
• Assim como em outras linguagens de programação, como o C,
uma função é um bloco de código designado para uma
determinada tarefa.
34
Funções
• As funções podem receber uma lista de parâmetros que são
informados entre os parênteses:
35
Funções de seta
• Permitem escrever uma • Uma instrução e retorna um valor,
sintaxe de função mais curta pode remover os colchetes e a
palavra-chave return.
• Antes da seta
hello = () => "Hello World!";
hello = function() {
return "Hello World!"; • Se tiver parâmetros
}
hello = (val) => "Hello " + val;
• IF • ELSE IF
X<10 sim
O valor de
x é menor
que 10
não X<10 sim
não
• IF ELSE
O valor de
X == 10 x é menor
não sim que 10
O valor de x
O valor de x
é maior que
é igual a 10
10
X<10 sim
não
O valor de
O valor de x
x é menor
é maior ou
que 10
igual a 10
37
Estruturas de Repetição
• For
i=0
i < 10 sim
não
O número é i
i++
• While
38
Vetores
Percorrendo com
WHILE
Percorrendo com
FOR
39
Estruturas de Repetição
i=0
• Do/While
O número é i
i++ sim
i < 10
não
40
Estruturas de Controle de Fluxo
• Switch console.log(day);
41
For In
• Em objeto, percorre as propriedades
<script>
window.onload = funcao01;
function funcao01() {
const pessoa = {
nome: "Pedro",
idade: 25
};
let text = "";
42
forEach()
• Em matriz, chama uma função uma vez para cada
elemento da matriz
<script>
window.onload = funcao01;
function funcao01() {
const numeros = [10, 30, 50];
let soma = 0;
numeros.forEach(funcao);
function funcao(value) {
soma += value;
}
document.getElementById("id01").innerHTML = soma;
}
</script>
<h1 id="id01"></h1>
43
for (variável of iteravel)
• Permite fazer um loop sobre estruturas de dados iteráveis
window.onload = funcao01;
function funcao01() {
const cars = ["BMW", "Volvo", "Mini"];
let text = "";
for (let x of cars) {
text += x + "<br>";
}
document.getElementById("id01").innerHTML = text;
44
Operador condicional ternário
• Equivale ao IF Else
• Sintaxe:
<expressão> ? <true> : <false>
• Exemplo:
• var status = ( idade >= 18 ) ? “adulto” : “menor de idade”;
Menor de adulto
idade
45
Objeto String
46
Objeto String
47
Objeto String
48
Objeto String
49
Objeto String
50
Objeto String
51
Objeto String
52
Objeto String
53
Objeto String
54
Objeto String
55
Objeto String
56
Objeto String
• charAt(posição)
• Retorna o caractere de uma posição específica da
string informada como parâmetro.
57
Objeto String
https://www.w3schools.com/jsref/jsref_obj_
string.asp
58
Métodos úteis
• prompt(<digite seu texto aqui>):
• Requer um valor do usuário;
• Para utilizar o valor deve-se atribuí-lo a uma variável;
• Para realizar operações matemáticas é necessário converter
o valor.
59
Objeto Data
60
Métodos de Data
• toString():
Mon Oct 10 2022 08:49:04 GMT-0300 (Horário Padrão de
Brasília)
• toUTCString():
Mon, 10 Oct 2022 11:49:46 GMT
• toDateString():
Mon Oct 10 2022
61
Métodos de Data
Método Descrição
• Um ótimo guia de referência para trabalhar com objetos de Data esta contido em:
https://www.w3schools.com/jsref/jsref_obj_date.asp
63
Métodos Matemáticos
Método Descrição
Math.min() e Math.max() encontra o valor mais baixo ou mais alto em uma lista de argumentos
Math.random() retorna um número aleatório entre 0 (inclusive) e 1 (exclusivo)
64
Métodos de Matrizes
No início No final
Visão do programador
A E I O U
66
Métodos BOM
window
67
BOM - Browser Object Model
Método Descrição
window.open() Abre uma nova janela
68
HTML DOM
• O que é isso?
• Um HTML DOM (Document Object Model) é um
modelo de objeto padrão e interface de
programação para HTML. Ele define:
• Os elementos HTML da página;
• As propriedades de todos os elementos HTML;
• Os métodos de acesso a todos os elementos HTML;
• Os eventos de todos os elementos HTML.
69
HTML DOM
• Um HTML DOM é criado pelo browser no momento em que a
página WEB é carregada.
• Ele é construído como uma árvore de objetos.
• Exemplo:
70
HTML DOM
• Com o HTML DOM, a linguagem JavaScript tem poder suficiente para:
71
HTML DOM – Definições básicas
• Métodos
• ações que são possíveis realizar sobre os elementos HTML
• Propriedades
• valores que são possíveis incluir ou alterar nos elementos
HTML
72
Exemplo
Método
73
Procurando elementos HTML
Nome do método Descrição O que retorna
document.getElementById(id) Procura um Um único elemento DOM cujo ID
elemento pelo seja encontrado. Se não for
atributo id encontrado retorna vazio.
document.getElementsByTagName(name) Procura um Um vetor de elementos DOM
elemento pelo nomeado de acordo com o nome
nome da TAG da TAG informada. Se não for
encontrado nenhum elemento,
retorna vazio.
document.getElementsByClassName(name) Procura um Um vetor de elementos DOM que
elemento pela possuam dentro os valores do
correspondência atributo class o valor informado no
do atributo class parâmetro. Se não for encontrado
nenhum elemento, retorna vazio.
74
Procurando elementos HTML
Nome do método Descrição O que retorna
document.querySelector(".example"); Procura um elemento Retorna o primeiro elemento
pelo selector cuja cujo o seletor coincida.
sintaxe é a mesma do
CSS
document.querySelectorAll(".example"); Procura um elemento Retorna todos os elementos
pelo selector cuja cujo o seletor coincida.
sintaxe é a mesma do
CSS
75
Alterando elementos HTML
Elementos HTML Descrição
76
Adicionando e excluindo elementos
Cria um parágrafo vazio Cria um nó de texto
const para = document.createElement("p"); const node = document.createTextNode("Novo parágrafo.");
Método Descrição
document.createElement(element) Cria um elemento HTML
78
Alguns atributos de eventos
• Eventos do Mouse
Evento Descrição
onclick Dispara quando há um clique do mouse sobre o elemento.
onmouseover Dispara quando o ponteiro do mouse está sobre o elemento
onmouseout Dispara quando o ponteiro do mouse sai de cima do elemento
• Eventos do Teclado
Evento Descrição
onkeydown Dispara quando o usuário está pressionando uma tecla.
onkeypress Dispara quando o usuário pressiona uma tecla.
onkeyup Dispara quando o usuário solta a tecla (finaliza a operação de pressionar)
79
Exemplo
80
Validação de formulário
(usando configurações reduzidas no form para uma visualização mais limpa do código)
81
Validação de formulário
Encontrando elementos
<script> HTML por coleções de
function validaForm() { objetos HTML
82
EventListener
• Anexa um manipulador de eventos sem substituir os existentes
e permite adicionar muitos eventos ao mesmo elemento.
• addEventListener("click", funcao01);
• não use o prefixo "on" para o evento; use " click" em vez de " onclick".
83
EventListener
<body>
<button id="botao" onclick="funcao05()">Tente</button>
<button id="botao" onclick="funcaoRemove()">Remove</button>
<p id="demo"></p>
<script>
var x = document.getElementById("botao");
x.addEventListener("mouseover", funcao01);
x.addEventListener("click", funcao02);
x.addEventListener("mouseout", funcao03);
let p1 = 5;
let p2 = 7;
x.addEventListener("click", function () { calculo(p1, p2) }); // usando função anônima para
passar parâmetros.
function funcao01() {
document.getElementById("demo").innerHTML += "Passei o mouse sobre!<br>";
}
84
EventListener
function funcao02() {
document.getElementById("demo").innerHTML += "Cliquei função 02!<br>";
}
function funcao03() {
document.getElementById("demo").innerHTML += "Retirei o mouse!<br>";
}
function calculo(a, b) {
document.getElementById("demo").innerHTML += a * b + "<br>";
}
function funcao05() {
document.getElementById("demo").innerHTML += "Cliquei função 05!<br>";
}
function funcaoRemove() {
x.removeEventListener("click", funcao02);
x.removeEventListener("click", function () { calculo(p1, p2) }); // Não retira função anônima
x.removeEventListener("click", funcao05); // Não retira, pois foi definida no onclick
}
</script>
</body>
85
Navegação DOM
<html> é o nó raiz
<html> não tem pais
<html> é o pai de <head> e <body>
<head> é o primeiro filho de <html>
<body> é o último filho de <html>
document.getElementById("demo").firstChild.nodeValue;
document.getElementById("demo").childNodes[0].nodeValue;
87
JSON
88
Sintaxe
• Um objeto JSON:
• é um conjunto desordenado de nome/valor.
• Começa com { (chaves de abertura) e termina com } (chaves de
fechamento).
• O nome é informado entre aspas.
• Cada nome é seguido por : (dois pontos)
• Cada nome/valor é seguido por , (vírgula).
{“nome”: valor}
Exemplo:
{“nome”: “Maria”, “idade”: 19}
No exemplo temos um objeto com um atributo chamado nome com o valor “Maria” e o atributo idade
com o valor 19.
89
Sintaxe
90
Sintaxe
• Valores com tipos de dados complexos:
• Array
• Representados por cholchetes e elementos separados por vírgula.
• Exemplo:
• {“estados”: [“MG”, “SP”, “RJ”, “ES”]}
• {“tabela”: [[1, 4], [2,3]]} → este exemplo representa uma matriz de duas linhas e duas
colunas.
• Objeto
{
“pessoa” : nome,
“endereco” : {
“logradouro”: “Rua 10”,
“numero”: 15,
“bairro”: “Vila Mariana”
“cidade”: “Uberaba”
}
}
91
Sintaxe
92
Métodos importantes
• Para converter texto (com a sintaxe correta) em um JSON,
utilize o método JSON.parse(<TEXTO>). Exemplo:
93
Como acessar os valores de um JSON
• Utilize o operador . (ponto).
94
Como acessar os valores de um JSON
• E se o valor estiver dentro de um objeto interno do
JSON?
95
Como acessar os valores de um JSON
• E se o valor estiver dentro de um vetor?
Fique atento ao
índice!
96
Loop de um objeto
<h2>Pegando as propriedades</h2> <h2>Pegando os valores</h2>
<p id="demo"></p> <p id="demo"></p>
<script> <script>
const myJSON = '{"name":"John", "age":30, "car":null}'; const myJSON = '{"name":"John", "age":30, "car":null}';
const myObj = JSON.parse(myJSON); const myObj = JSON.parse(myJSON);
97
As diferenças entre
innerHTML, innerText e
textContent
98
innerHTML, innerText e textContent
100
forEach() com For In
const matrizObjetos = [{ nome: "João", idade: 50 }, { nome: "Ana", idade: 23 }]
let texto1 = JSON.stringify(matrizObjetos);
let texto2 = "";
document.getElementById("p1").innerHTML = texto1;
function pesquisaObjeto() {
texto2 = "";
texto2 += "<h2>Exemplo 1 - forEach() com For In</h2>";
matrizObjetos.forEach(pesquisa1);
// ...
document.getElementById("p2").innerHTML = texto2;
}
function pesquisa1(objeto2) {
for (const x in objeto2) {
texto2 += x + " = " + objeto2[x] + "<br>";
}
texto2 += "<hr>";
}
101
For Of com For in
const matrizObjetos = [{ nome: "João", idade: 50 }, { nome: "Ana", idade: 23 }]
let texto1 = JSON.stringify(matrizObjetos);
let texto2 = "";
document.getElementById("p1").innerHTML = texto1;
function pesquisaObjeto() {
texto2 = "";
//...
texto2 += "<h2>Exemplo 2 - For Of com For in</h2>";
for (const objetoN of matrizObjetos) {
for (const i in objetoN) {
texto2 += i + " = " + objetoN[i] + "<br>";
}
texto2 += "<hr>";
}
document.getElementById("p2").innerHTML = texto2;
}
102