SlideShare uma empresa Scribd logo
Introdução ao JavaScript
Programação para a Internet
Prof. Vilson Heck Junior
JavaScript
• Também chamada de JS, é a linguagem
de criação de scripts para a Web;
• É utilizado por bilhões de páginas para:
– Adicionar funcionalidades;
– Verificar formulários;
– Comunicar com servidores;
– E muitos mais.
JavaScript
• Originalmente criada na Netscape por
Brendan Eich em 1994;
• Disputa: Netscape vs Microsoft:
– Microsoft -> Visual Basic;
• Visual Basic -> VB Script;
– Java da Sun surgia como potencial;
• Java para programadores não profissionais:
– Javascript!
JavaScript
JavaScript
• Java e JavaScript são “coisas”
completamente distintas e desconexas;
• Compartilham apenas um passado de
“disputa territorial” contra a Microsoft;
JavaScript
• JavaScript não permite a criação de
applets nem de aplicativos;
• JavaScript reside dentro de documentos
HTML e pode prover diferentes níveis de
interatividades não suportados pelo
HTML sozinho;
JavaScript
• Diferenças chaves em relação ao Java:
– Java é uma linguagem de programação;
– JavaScript é uma linguagem de script;
– Aplicativos Java são executados pela máquina
virtual Java;
– Scripts JavaScript são executados pelos browsers;
– Java é compilado;
– JavaScript é texto puro;
– Cada tecnologia requer um plug-in diferente.
Fonte: Oracle
JavaScript
• Atualmente, o maior mantedor da
linguagem é a Fundação Mozilla;
– Encontramos ótimos materiais e tutoriais
sobre JavaScript na W3School, mas também
encontramos referência completa do
JavaScript no site do Mozilla:
• https://developer.mozilla.org/en/docs/JavaScript
JavaScript
• Com o tempo, muitas funcionalidades
foram criadas em forma de Script para os
browser e foram “incorporadas” ao
JavaScript:
– JavaScript hoje é um conjunto de
funcionalidades e, até mesmo, diferentes
padrões.
JavaScript
• Os principais padrões a destacar são:
– A Linguagem Núcleo:
• ECMAScript (Versão 7, de Junho de 2016);
• Padrão mantido por ECMA International-
Associação Industrial de padronização de
tecnologias da Informação e Comunicação;
– DOM:
• Document Object Model;
• Define a Interface da Linguagem com o Browser;
• Padrão mantido por W3C;
MÃO NA MASSA
Introdução ao JavaScript
A Tag
• Para inserir códigos JavaScript, iremos
fazê-lo em uma Tag HTML apropriada:
– <script>
– </script>
• O JavaScript é orientado a objetos;
– Primeira Classe: document
JavaScript Externo
• Da mesma forma como nos arquivos CSS,
podemos deixar funções e comandos
JavaScript em arquivos externos:
– Estes arquivos devem ter a extensão .JS
• Para importar:
<script src="meuScript.js"></script>
Hello World
• Crie uma nova página;
• Dentro da seção <body> insira o trecho:
<script>
document.write("Hello World!");
</script>
• Neste caso, o trecho “escrito” pelo JavaScript, será
incorporado ao HTML apenas em sua construção;
Classe document
• Propriedades de Exemplo:
– title – Define ou Retorna o Título da Página;
– URL – Retorna o URL completo da página;
• Métodos de Exemplo:
– write() – Escreve texto no documento;
– writeln() – Escreve uma linha de texto no
documento;
Hello World
• Na página criada anteriormente;
– Defina um título: “JavaScript Hello World!”;
• Altere o script:
<script>
document.write("<h2>"+document.title+"</h2>");
</script>
• Neste caso, o trecho “escrito” pelo JavaScript, será
incorporado ao HTML apenas em sua construção;
Reagindo a Eventos
• É possível disparar scripts a partir de diversos tipos de
eventos;
• O primeiro que iremos estudar é o de um clique em
um botão:
– Tag: <button>Clique Aqui!</button>
– Atributos:
• type=“button”;
• onclick=“alert(‘Bem vindo!’)”
<button type="button" onclick="alert(
'Bem vindo!')"> Clique Aqui!</button>
Alterando um Conteúdo
• Atributo global ID:
<p id="paragrafo">Olá!</p>
<script>
function mFuncao() {
var x = document.getElementById("paragrafo");
x.innerHTML="Hello!";
}
</script>
<button type="button" onclick="mFuncao();"> Translate</button>
Alterando um Atributo
<script>
function trocaImagem() {
var elemento=document.getElementById("myimage");
if (elemento.src.match("bulbon")) {
elemento.src="pic_bulboff.gif";
} else {
elemento.src="pic_bulbon.gif";
}
}
</script>
<p><img id="myimage" onclick="trocaImagem()"
src="pic_bulboff.gif" width=100 height=180></p>
<p>Clique na lâmpada para ligar/desligar a luz</p>
Variáveis
• JavaScript é uma linguagem de tipagem
dinâmica e fraca:
– Não é necessário declarar o tipo de uma variável;
– Todas as variáveis são objetos (referência);
– Números são todos reais de 64bits;
– A variável irá “alterar” o seu tipo de dado conforme os valores
forem atribuídos:
• Tipo de dado dinâmico:
var x; // x é indefinido
x = 5; // x é um número
x = "John"; // x é uma string
x = true; // x é um valor lógico
x = null; // x é indefinido
Recebendo uma Entrada
• JavaScript:
function Soma()
{
var e1 = parseInt(document.getElementById("v1").value);
var e2 = parseInt(document.getElementById("v2").value);
document.getElementById("res").innerHTML = "Resposta: " + (e1 + e2);
}
• HTML:
<input type="text" id="v1"><br>
<input type="text" id="v2">
<p id="res">Resposta: </p>
<button type="button" onclick="Soma()">Soma</button>
Conversão de texto para
inteiro!
Arrays
• Arrays são construídos através de um
construtor e possuem tamanho dinâmico:
var nomes = new Array();
//var nomes = [];
nomes[0] = "Fulano de Tal";
nomes[1] = "Beutrano";
nomes.push("Ciclano");
Documentação
Objetos
• Objetos possuem atributos e métodos:
– Assim como em outras linguagens
orientadas a objetos, separados por ponto;
– Para criar um objeto carro:
• var carro={placa:" ABC-1234", ano:2013}
– Para usar os atributos:
• carro.ano = 2012;
• document.write(carro.placa);
– Para adicionar novo atributo:
• carro.cor = "verde";
Classe
• Javascript é orientada a objetos por
prototipação, não possuí exatamente o
conceito de classes;
• É possível construir uma função que gera
novas variáveis e, assim, simular o
comportamento de uma classe;
*Classe*
function Carro(ano, placa) { //Construtor
this.ano = ano; //Atributo
this.placa = placa;
var nCor = Math.random() * Carro.cores.length;
this.cor = Carro.cores[Math.floor(nCor)];
this.alterarAno = function(novoAno) { //Método
this.ano = novoAno;
};
}
Carro.cores = ["Azul", "Branco", "Vermelho"]; //Atributo estático
Carro.adicionarCor = function (novaCor) { //Método estático
Carro.cores.push(novaCor);
};
Operadores
Operador Descrição
+ Efetuar soma de números ou Concatenação de strings
- Efetuar subtração de números
* Efetuar multiplicação de números
/ Efetuar divisão de números (Sempre divisão real)
% Resto da divisão
++ Incremento
-- Decremento
Operadores de Comparação
Operador Descrição
== Valor igual. (5 == “5”) retorna true
=== Valor e tipo iguais. (5 === “5”) retorna false
!= Valor diferente. (5 != “5”) retorna false
!== Valor e tipos diferentes. (5 !== “5”) returna true
> Maior
< Menor
>= Maior ou Igual
<= Menor ou Igual
&& E (and)
|| OU (or)
! NÃO (not)
Estrutura de Decisão
• if else funciona igual em C/Java:
if (condição) {
código para quando retornar true
}
else {
código para quando retornar false
}
• Obs.: switch case também funciona igual.
Estruturas de Repetição
• for, while e do while funcionam da mesma
forma que em C/Java;
– Incluindo os comandos continue e break;
for (x=0;x<10;x++) { }
while (x < 10) { }
do {
} while (x < 10);
TRATAMENTO DE EXCEÇÕES
Introdução ao JavaScript
Tratamento de Exceções
• Erros irão sempre acontecer:
– Erros de sintaxe (muitas vezes de digitação);
– Recursos inexistentes (diferentes browsers);
– Entrada de dados errada;
– E muitas outras coisas misteriosas do além.
Exceções
• Delimitar área que será verificada:
try {
//Código passivo de erro
}
• Capturar um eventual erro:
catch (erro) {
//Tratamento para eventual erro capturado
}
Disparar Exceções
• Em algumas ocasiões, geralmente
através de uma entrada errada do
usuário, podemos determinar a criação
de um novo erro:
– Disparar uma nova exceção.
<script>
function verificar() {
try {
var x=document.getElementById("valor").value;
if (x == "") throw "Campo vazio";
if (isNaN(x)) throw "não é um número válido";
if (x > 10) throw "Alto demais";
if (x < 5) throw "Baixo demais";
document.getElementById("mesg").innerHTML = "Número aceito!";
} catch(err) {
var y=document.getElementById("mesg");
y.innerHTML="Erro: " + err + ".";
}
}
</script>
<h1>Exceções</h1>
<p>Digite um número entre 5 e 10:</p>
<input id="valor" type="text">
<button type="button" onclick="verificar()">Testar</button>
Cliente
Formulários
Browser
form
Internet
Servidor
Apache
PHP
js
MySQL
BD
Validação de Formulários
• Ao desenvolver aplicativos para internet,
dados serão informados pelo usuário;
• Antes de enviar estes dados ao servidor, é
possível validar/verificar se eles tem coerência
em relação ao que é solicitado:
– O usuário esqueceu campos em branco?
– O e-mail digitado é válido?
– A data digitada é válida?
– Num campo numérico, foi digitado um número?
Baixe e descompacte o arquivo
recebe.zip da pasta de arquivos
<!DOCTYPE html>
<html>
<head>
<script>
function validarForm() {
var val = document.getElementById("valido");
try {
var x = document.forms["meuForm"]["nome"].value;
if (x == null || x == "") {
throw "O Nome deve ser preenchido!";
}
var y = document.forms["meuForm"]["email"].value;
var atpos = y.indexOf("@");
var dotpos = y.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= y.length){
throw "Digite um e-mail válido!";
}
return true;
(Validando formulário: 1/2)
} catch (err) {
val.style.color = "#FF0000";
val.innerHTML = "Erro: " + err;
return false;
} //Fim catch
} //Fim function
</script>
</head>
<body>
<form name="meuForm" action= "recebe.php"
onsubmit="return validarForm();" method="post">
Nome: <input type="text" name="nome">
e-mail: <input type="text" name="email">
<input type="submit" value="Enviar">
</form>
<p id="valido">Preencha o formulário e clique em Enviar</p>
</body>
</html>
(Validando formulário: 2/2)
ADICIONANDO E REMOVENDO
ELEMENTOS
Introdução ao JavaScript
Adicionando Elementos
• É possível adicionar novos elementos HTML;
• Qualquer tipo de elemento, definindo
qualquer propriedade;
• Tudo através do JavaScript;
<body id="corpo">
<h1>Adicionar Elementos</h1>
<p>Digite o texto: <input type="text" id="texto"></p>
<p><button onclick="adicionar()">Adicionar</button></p>
<script>
function adicionar() {
var texto = document.getElementById("texto").value;
var para = document.createElement("p");
para.innerHTML = texto;
var corpo = document.getElementById("corpo");
corpo.appendChild(para);
}
</script>
</body>
Adicionando Elementos
Removendo Elementos
• É possível remover elementos HTML;
• Qualquer tipo de elemento, com a condição de
que conheçamos também o seu pai;
• Tudo através do JavaScript;
Removendo Elementos
<body id="corpo">
<h1>Remover Elemento</h1>
<p><button onclick="remover()">Remover</button></p>
<p id="texto">Texto que será removido...</p>
<script>
function remover() {
var pai = document.getElementById("corpo");
var filho = document.getElementById("texto");
pai.removeChild(filho);
}
</script>
</body>
COOKIES
Introdução ao JavaScript
Cookies
• Cookies são variáveis que ficam armazenadas no
browser do visitante;
• Basicamente elas permitem que a página lembre
de qualquer informação ou interação que já teve
com o mesmo browser/usuário que esta
acessando novamente:
– Datas;
– Dados Pessoais;
– Login;
– Senha;
– Informações de Seção de Conexão;
– Etc...
Cookies
<!DOCTYPE HTML>
<html>
<head>
<title>Teste com Cookies</title>
</head>
<body onload="checkCookie()">
<h1>Sistema de biscoitos</h1>
<p id="msg"></p>
<script src="cookie.js"></script>
</body>
</html>
Cookies
function checkCookie() {
var user = getCookie("user");
var msg = document.getElementById("msg");
if (user != null && user != "") {
msg.innerHTML = "Bem-vindo de volta " + user;
} else {
user = prompt("Digite seu nome:", "");
if (user != null && user != "") {
setCookie("user", user, 365);
msg.innerHTML="Bem-vindo " + user;
}
}
}
Cookies
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) +
((exdays == null) ? "" : "; expires="+exdate.toUTCString());
document.cookie = c_name + "=" + c_value + "; path=/";
}
function getCookie(c_name) {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1) {
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1) {
c_value = null;
} else {
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1) {
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
Cookies
MÃO NA MASSA 2.0
SLIDES GAME!
Introdução ao JavaScript

Mais conteúdo relacionado

Semelhante a 04_Introducao_JavaScript.pdf

Java script1
Java script1Java script1
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
Pedro Sousa
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
Python 08
Python 08Python 08
Python 08
Bruno Catão
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfv
erickrodrigo23
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
Marco Antonio Filho
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7
Felipe Pimentel
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
Henrique Gogó
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdf
AntonioSvio1
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
Cristiano Pires Martins
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 
Hello vue
Hello vueHello vue
Hello vue
Gabriel Colombo
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebBruno Borges
 
Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)
Loiane Groner
 
Grails
GrailsGrails
Grails
Alex Guido
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
Alex Guido
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
Julian Cesar
 

Semelhante a 04_Introducao_JavaScript.pdf (20)

Java script1
Java script1Java script1
Java script1
 
Html dom, eventos, jquery
Html dom, eventos, jqueryHtml dom, eventos, jquery
Html dom, eventos, jquery
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Python 08
Python 08Python 08
Python 08
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfv
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdf
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
Hello vue
Hello vueHello vue
Hello vue
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento Web
 
Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)Typescript: the Fun Parts (BrazilJS 2017)
Typescript: the Fun Parts (BrazilJS 2017)
 
Grails
GrailsGrails
Grails
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 

Mais de DaniloPereira341965

03 - Placa-Mãe.pdf
03 - Placa-Mãe.pdf03 - Placa-Mãe.pdf
03 - Placa-Mãe.pdf
DaniloPereira341965
 
Aula 03 - Metodologias Ágeis.pdf
Aula 03 - Metodologias Ágeis.pdfAula 03 - Metodologias Ágeis.pdf
Aula 03 - Metodologias Ágeis.pdf
DaniloPereira341965
 
Aula 02 - Processo de Software I.pdf
Aula 02 - Processo de Software I.pdfAula 02 - Processo de Software I.pdf
Aula 02 - Processo de Software I.pdf
DaniloPereira341965
 
M_III_Livro_2_Gestao_EaD_FINAL.pdf
M_III_Livro_2_Gestao_EaD_FINAL.pdfM_III_Livro_2_Gestao_EaD_FINAL.pdf
M_III_Livro_2_Gestao_EaD_FINAL.pdf
DaniloPereira341965
 
03 - Conceitos de Software.pdf
03 - Conceitos de Software.pdf03 - Conceitos de Software.pdf
03 - Conceitos de Software.pdf
DaniloPereira341965
 
Aulas_SQL.pdf
Aulas_SQL.pdfAulas_SQL.pdf
Aulas_SQL.pdf
DaniloPereira341965
 
Managing Develop of Large Systems
Managing Develop of Large SystemsManaging Develop of Large Systems
Managing Develop of Large Systems
DaniloPereira341965
 

Mais de DaniloPereira341965 (7)

03 - Placa-Mãe.pdf
03 - Placa-Mãe.pdf03 - Placa-Mãe.pdf
03 - Placa-Mãe.pdf
 
Aula 03 - Metodologias Ágeis.pdf
Aula 03 - Metodologias Ágeis.pdfAula 03 - Metodologias Ágeis.pdf
Aula 03 - Metodologias Ágeis.pdf
 
Aula 02 - Processo de Software I.pdf
Aula 02 - Processo de Software I.pdfAula 02 - Processo de Software I.pdf
Aula 02 - Processo de Software I.pdf
 
M_III_Livro_2_Gestao_EaD_FINAL.pdf
M_III_Livro_2_Gestao_EaD_FINAL.pdfM_III_Livro_2_Gestao_EaD_FINAL.pdf
M_III_Livro_2_Gestao_EaD_FINAL.pdf
 
03 - Conceitos de Software.pdf
03 - Conceitos de Software.pdf03 - Conceitos de Software.pdf
03 - Conceitos de Software.pdf
 
Aulas_SQL.pdf
Aulas_SQL.pdfAulas_SQL.pdf
Aulas_SQL.pdf
 
Managing Develop of Large Systems
Managing Develop of Large SystemsManaging Develop of Large Systems
Managing Develop of Large Systems
 

04_Introducao_JavaScript.pdf

  • 1. Introdução ao JavaScript Programação para a Internet Prof. Vilson Heck Junior
  • 2. JavaScript • Também chamada de JS, é a linguagem de criação de scripts para a Web; • É utilizado por bilhões de páginas para: – Adicionar funcionalidades; – Verificar formulários; – Comunicar com servidores; – E muitos mais.
  • 3. JavaScript • Originalmente criada na Netscape por Brendan Eich em 1994; • Disputa: Netscape vs Microsoft: – Microsoft -> Visual Basic; • Visual Basic -> VB Script; – Java da Sun surgia como potencial; • Java para programadores não profissionais: – Javascript!
  • 5. JavaScript • Java e JavaScript são “coisas” completamente distintas e desconexas; • Compartilham apenas um passado de “disputa territorial” contra a Microsoft;
  • 6. JavaScript • JavaScript não permite a criação de applets nem de aplicativos; • JavaScript reside dentro de documentos HTML e pode prover diferentes níveis de interatividades não suportados pelo HTML sozinho;
  • 7. JavaScript • Diferenças chaves em relação ao Java: – Java é uma linguagem de programação; – JavaScript é uma linguagem de script; – Aplicativos Java são executados pela máquina virtual Java; – Scripts JavaScript são executados pelos browsers; – Java é compilado; – JavaScript é texto puro; – Cada tecnologia requer um plug-in diferente. Fonte: Oracle
  • 8. JavaScript • Atualmente, o maior mantedor da linguagem é a Fundação Mozilla; – Encontramos ótimos materiais e tutoriais sobre JavaScript na W3School, mas também encontramos referência completa do JavaScript no site do Mozilla: • https://developer.mozilla.org/en/docs/JavaScript
  • 9. JavaScript • Com o tempo, muitas funcionalidades foram criadas em forma de Script para os browser e foram “incorporadas” ao JavaScript: – JavaScript hoje é um conjunto de funcionalidades e, até mesmo, diferentes padrões.
  • 10. JavaScript • Os principais padrões a destacar são: – A Linguagem Núcleo: • ECMAScript (Versão 7, de Junho de 2016); • Padrão mantido por ECMA International- Associação Industrial de padronização de tecnologias da Informação e Comunicação; – DOM: • Document Object Model; • Define a Interface da Linguagem com o Browser; • Padrão mantido por W3C;
  • 11. MÃO NA MASSA Introdução ao JavaScript
  • 12. A Tag • Para inserir códigos JavaScript, iremos fazê-lo em uma Tag HTML apropriada: – <script> – </script> • O JavaScript é orientado a objetos; – Primeira Classe: document
  • 13. JavaScript Externo • Da mesma forma como nos arquivos CSS, podemos deixar funções e comandos JavaScript em arquivos externos: – Estes arquivos devem ter a extensão .JS • Para importar: <script src="meuScript.js"></script>
  • 14. Hello World • Crie uma nova página; • Dentro da seção <body> insira o trecho: <script> document.write("Hello World!"); </script> • Neste caso, o trecho “escrito” pelo JavaScript, será incorporado ao HTML apenas em sua construção;
  • 15. Classe document • Propriedades de Exemplo: – title – Define ou Retorna o Título da Página; – URL – Retorna o URL completo da página; • Métodos de Exemplo: – write() – Escreve texto no documento; – writeln() – Escreve uma linha de texto no documento;
  • 16. Hello World • Na página criada anteriormente; – Defina um título: “JavaScript Hello World!”; • Altere o script: <script> document.write("<h2>"+document.title+"</h2>"); </script> • Neste caso, o trecho “escrito” pelo JavaScript, será incorporado ao HTML apenas em sua construção;
  • 17. Reagindo a Eventos • É possível disparar scripts a partir de diversos tipos de eventos; • O primeiro que iremos estudar é o de um clique em um botão: – Tag: <button>Clique Aqui!</button> – Atributos: • type=“button”; • onclick=“alert(‘Bem vindo!’)” <button type="button" onclick="alert( 'Bem vindo!')"> Clique Aqui!</button>
  • 18. Alterando um Conteúdo • Atributo global ID: <p id="paragrafo">Olá!</p> <script> function mFuncao() { var x = document.getElementById("paragrafo"); x.innerHTML="Hello!"; } </script> <button type="button" onclick="mFuncao();"> Translate</button>
  • 19. Alterando um Atributo <script> function trocaImagem() { var elemento=document.getElementById("myimage"); if (elemento.src.match("bulbon")) { elemento.src="pic_bulboff.gif"; } else { elemento.src="pic_bulbon.gif"; } } </script> <p><img id="myimage" onclick="trocaImagem()" src="pic_bulboff.gif" width=100 height=180></p> <p>Clique na lâmpada para ligar/desligar a luz</p>
  • 20. Variáveis • JavaScript é uma linguagem de tipagem dinâmica e fraca: – Não é necessário declarar o tipo de uma variável; – Todas as variáveis são objetos (referência); – Números são todos reais de 64bits; – A variável irá “alterar” o seu tipo de dado conforme os valores forem atribuídos: • Tipo de dado dinâmico: var x; // x é indefinido x = 5; // x é um número x = "John"; // x é uma string x = true; // x é um valor lógico x = null; // x é indefinido
  • 21. Recebendo uma Entrada • JavaScript: function Soma() { var e1 = parseInt(document.getElementById("v1").value); var e2 = parseInt(document.getElementById("v2").value); document.getElementById("res").innerHTML = "Resposta: " + (e1 + e2); } • HTML: <input type="text" id="v1"><br> <input type="text" id="v2"> <p id="res">Resposta: </p> <button type="button" onclick="Soma()">Soma</button> Conversão de texto para inteiro!
  • 22. Arrays • Arrays são construídos através de um construtor e possuem tamanho dinâmico: var nomes = new Array(); //var nomes = []; nomes[0] = "Fulano de Tal"; nomes[1] = "Beutrano"; nomes.push("Ciclano"); Documentação
  • 23. Objetos • Objetos possuem atributos e métodos: – Assim como em outras linguagens orientadas a objetos, separados por ponto; – Para criar um objeto carro: • var carro={placa:" ABC-1234", ano:2013} – Para usar os atributos: • carro.ano = 2012; • document.write(carro.placa); – Para adicionar novo atributo: • carro.cor = "verde";
  • 24. Classe • Javascript é orientada a objetos por prototipação, não possuí exatamente o conceito de classes; • É possível construir uma função que gera novas variáveis e, assim, simular o comportamento de uma classe;
  • 25. *Classe* function Carro(ano, placa) { //Construtor this.ano = ano; //Atributo this.placa = placa; var nCor = Math.random() * Carro.cores.length; this.cor = Carro.cores[Math.floor(nCor)]; this.alterarAno = function(novoAno) { //Método this.ano = novoAno; }; } Carro.cores = ["Azul", "Branco", "Vermelho"]; //Atributo estático Carro.adicionarCor = function (novaCor) { //Método estático Carro.cores.push(novaCor); };
  • 26. Operadores Operador Descrição + Efetuar soma de números ou Concatenação de strings - Efetuar subtração de números * Efetuar multiplicação de números / Efetuar divisão de números (Sempre divisão real) % Resto da divisão ++ Incremento -- Decremento
  • 27. Operadores de Comparação Operador Descrição == Valor igual. (5 == “5”) retorna true === Valor e tipo iguais. (5 === “5”) retorna false != Valor diferente. (5 != “5”) retorna false !== Valor e tipos diferentes. (5 !== “5”) returna true > Maior < Menor >= Maior ou Igual <= Menor ou Igual && E (and) || OU (or) ! NÃO (not)
  • 28. Estrutura de Decisão • if else funciona igual em C/Java: if (condição) { código para quando retornar true } else { código para quando retornar false } • Obs.: switch case também funciona igual.
  • 29. Estruturas de Repetição • for, while e do while funcionam da mesma forma que em C/Java; – Incluindo os comandos continue e break; for (x=0;x<10;x++) { } while (x < 10) { } do { } while (x < 10);
  • 31. Tratamento de Exceções • Erros irão sempre acontecer: – Erros de sintaxe (muitas vezes de digitação); – Recursos inexistentes (diferentes browsers); – Entrada de dados errada; – E muitas outras coisas misteriosas do além.
  • 32. Exceções • Delimitar área que será verificada: try { //Código passivo de erro } • Capturar um eventual erro: catch (erro) { //Tratamento para eventual erro capturado }
  • 33. Disparar Exceções • Em algumas ocasiões, geralmente através de uma entrada errada do usuário, podemos determinar a criação de um novo erro: – Disparar uma nova exceção.
  • 34. <script> function verificar() { try { var x=document.getElementById("valor").value; if (x == "") throw "Campo vazio"; if (isNaN(x)) throw "não é um número válido"; if (x > 10) throw "Alto demais"; if (x < 5) throw "Baixo demais"; document.getElementById("mesg").innerHTML = "Número aceito!"; } catch(err) { var y=document.getElementById("mesg"); y.innerHTML="Erro: " + err + "."; } } </script> <h1>Exceções</h1> <p>Digite um número entre 5 e 10:</p> <input id="valor" type="text"> <button type="button" onclick="verificar()">Testar</button>
  • 36. Validação de Formulários • Ao desenvolver aplicativos para internet, dados serão informados pelo usuário; • Antes de enviar estes dados ao servidor, é possível validar/verificar se eles tem coerência em relação ao que é solicitado: – O usuário esqueceu campos em branco? – O e-mail digitado é válido? – A data digitada é válida? – Num campo numérico, foi digitado um número? Baixe e descompacte o arquivo recebe.zip da pasta de arquivos
  • 37. <!DOCTYPE html> <html> <head> <script> function validarForm() { var val = document.getElementById("valido"); try { var x = document.forms["meuForm"]["nome"].value; if (x == null || x == "") { throw "O Nome deve ser preenchido!"; } var y = document.forms["meuForm"]["email"].value; var atpos = y.indexOf("@"); var dotpos = y.lastIndexOf("."); if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= y.length){ throw "Digite um e-mail válido!"; } return true; (Validando formulário: 1/2)
  • 38. } catch (err) { val.style.color = "#FF0000"; val.innerHTML = "Erro: " + err; return false; } //Fim catch } //Fim function </script> </head> <body> <form name="meuForm" action= "recebe.php" onsubmit="return validarForm();" method="post"> Nome: <input type="text" name="nome"> e-mail: <input type="text" name="email"> <input type="submit" value="Enviar"> </form> <p id="valido">Preencha o formulário e clique em Enviar</p> </body> </html> (Validando formulário: 2/2)
  • 40. Adicionando Elementos • É possível adicionar novos elementos HTML; • Qualquer tipo de elemento, definindo qualquer propriedade; • Tudo através do JavaScript;
  • 41. <body id="corpo"> <h1>Adicionar Elementos</h1> <p>Digite o texto: <input type="text" id="texto"></p> <p><button onclick="adicionar()">Adicionar</button></p> <script> function adicionar() { var texto = document.getElementById("texto").value; var para = document.createElement("p"); para.innerHTML = texto; var corpo = document.getElementById("corpo"); corpo.appendChild(para); } </script> </body> Adicionando Elementos
  • 42. Removendo Elementos • É possível remover elementos HTML; • Qualquer tipo de elemento, com a condição de que conheçamos também o seu pai; • Tudo através do JavaScript;
  • 43. Removendo Elementos <body id="corpo"> <h1>Remover Elemento</h1> <p><button onclick="remover()">Remover</button></p> <p id="texto">Texto que será removido...</p> <script> function remover() { var pai = document.getElementById("corpo"); var filho = document.getElementById("texto"); pai.removeChild(filho); } </script> </body>
  • 45.
  • 46.
  • 47. Cookies • Cookies são variáveis que ficam armazenadas no browser do visitante; • Basicamente elas permitem que a página lembre de qualquer informação ou interação que já teve com o mesmo browser/usuário que esta acessando novamente: – Datas; – Dados Pessoais; – Login; – Senha; – Informações de Seção de Conexão; – Etc...
  • 48. Cookies <!DOCTYPE HTML> <html> <head> <title>Teste com Cookies</title> </head> <body onload="checkCookie()"> <h1>Sistema de biscoitos</h1> <p id="msg"></p> <script src="cookie.js"></script> </body> </html>
  • 49. Cookies function checkCookie() { var user = getCookie("user"); var msg = document.getElementById("msg"); if (user != null && user != "") { msg.innerHTML = "Bem-vindo de volta " + user; } else { user = prompt("Digite seu nome:", ""); if (user != null && user != "") { setCookie("user", user, 365); msg.innerHTML="Bem-vindo " + user; } } }
  • 50. Cookies function setCookie(c_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value = escape(value) + ((exdays == null) ? "" : "; expires="+exdate.toUTCString()); document.cookie = c_name + "=" + c_value + "; path=/"; }
  • 51. function getCookie(c_name) { var c_value = document.cookie; var c_start = c_value.indexOf(" " + c_name + "="); if (c_start == -1) { c_start = c_value.indexOf(c_name + "="); } if (c_start == -1) { c_value = null; } else { c_start = c_value.indexOf("=", c_start) + 1; var c_end = c_value.indexOf(";", c_start); if (c_end == -1) { c_end = c_value.length; } c_value = unescape(c_value.substring(c_start,c_end)); } return c_value; } Cookies
  • 52. MÃO NA MASSA 2.0 SLIDES GAME! Introdução ao JavaScript