88
Introdu¸c˜ ao asico do JavaScript JavaScriptavan¸cado JavaScript avan¸cado II Programa¸c˜ ao Web Javascript Ivo Calado Instituto Federal de Educa¸c˜ ao, Ciˆ encia e Tecnologia de Alagoas 6 de Novembro de 2012 1 / 72 Ivo Calado IFAL Programa¸c˜ ao Web

Javascript

Embed Size (px)

Citation preview

Page 1: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Programacao WebJavascript

Ivo Calado

Instituto Federal de Educacao, Ciencia e Tecnologia de Alagoas

6 de Novembro de 2012

1 / 72 Ivo Calado IFAL

Programacao Web

Page 2: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Roteiro

1 Introducao

2 Basico do JavaScript

3 JavaScript avancado

4 JavaScript avancado II

2 / 72 Ivo Calado IFAL

Programacao Web

Page 3: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

O que vimos ate aqui?

Linguagens que possuem como foco a visualizacao dainformacao

Nao possibilitam a execucao de fluxos de codigo

Nao sao destinadas a programadores!!

JavaScript foi projetado para adicionar interatividade apaginas HTML

Trata-se de uma linguagem de script

Trata-se de uma linguagem interpretada

O que e uma linguagem interpretada?

Significa que o script e executada sem uma previa compilacao

3 / 72 Ivo Calado IFAL

Programacao Web

Page 4: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

O que vimos ate aqui?

Linguagens que possuem como foco a visualizacao dainformacao

Nao possibilitam a execucao de fluxos de codigo

Nao sao destinadas a programadores!!

JavaScript foi projetado para adicionar interatividade apaginas HTML

Trata-se de uma linguagem de script

Trata-se de uma linguagem interpretada

O que e uma linguagem interpretada?

Significa que o script e executada sem uma previa compilacao

3 / 72 Ivo Calado IFAL

Programacao Web

Page 5: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

O que vimos ate aqui?

Linguagens que possuem como foco a visualizacao dainformacao

Nao possibilitam a execucao de fluxos de codigo

Nao sao destinadas a programadores!!

JavaScript foi projetado para adicionar interatividade apaginas HTML

Trata-se de uma linguagem de script

Trata-se de uma linguagem interpretada

O que e uma linguagem interpretada?

Significa que o script e executada sem uma previa compilacao

3 / 72 Ivo Calado IFAL

Programacao Web

Page 6: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

O que vimos ate aqui?

Linguagens que possuem como foco a visualizacao dainformacao

Nao possibilitam a execucao de fluxos de codigo

Nao sao destinadas a programadores!!

JavaScript foi projetado para adicionar interatividade apaginas HTML

Trata-se de uma linguagem de script

Trata-se de uma linguagem interpretada

O que e uma linguagem interpretada?

Significa que o script e executada sem uma previa compilacao

3 / 72 Ivo Calado IFAL

Programacao Web

Page 7: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

O que vimos ate aqui?

Linguagens que possuem como foco a visualizacao dainformacao

Nao possibilitam a execucao de fluxos de codigo

Nao sao destinadas a programadores!!

JavaScript foi projetado para adicionar interatividade apaginas HTML

Trata-se de uma linguagem de script

Trata-se de uma linguagem interpretada

O que e uma linguagem interpretada?

Significa que o script e executada sem uma previa compilacao

3 / 72 Ivo Calado IFAL

Programacao Web

Page 8: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

Curiosidades

Qual a relacao entre Java e JavaScript?

Nenhuma. Trata-se de linguagens completamente diferentes. Umacriada pela Sun e a outra pela Netscape!

Qual o nome oficial da linguagem JavaScript?

ECMAScript! Desenvolvido e mantido pela ECMA InternationalOrganization

4 / 72 Ivo Calado IFAL

Programacao Web

Page 9: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

Curiosidades

Qual a relacao entre Java e JavaScript?

Nenhuma. Trata-se de linguagens completamente diferentes. Umacriada pela Sun e a outra pela Netscape!

Qual o nome oficial da linguagem JavaScript?

ECMAScript! Desenvolvido e mantido pela ECMA InternationalOrganization

4 / 72 Ivo Calado IFAL

Programacao Web

Page 10: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

O que e Javascript

Curiosidades

Qual a relacao entre Java e JavaScript?

Nenhuma. Trata-se de linguagens completamente diferentes. Umacriada pela Sun e a outra pela Netscape!

Qual o nome oficial da linguagem JavaScript?

ECMAScript! Desenvolvido e mantido pela ECMA InternationalOrganization

4 / 72 Ivo Calado IFAL

Programacao Web

Page 11: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Hello World!

Hello World

Para adicionar algum script JavaScript basta fazer uso da tagscript tendo como valor do campo type: text/javascript

<html><body>

<s c r i p t type="text/javascript">document . w r i t e ("<h1>Hello World!</h1>" ) ;

</ s c r i p t></body>

</ html>

document.write e a maneira padrao para escrita na saıda!

5 / 72 Ivo Calado IFAL

Programacao Web

Page 12: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Hello World!

Como tornar JavaScript compatıvel com navegadoresantigos?

Deve-se fazer uso dos comentarios HTML para “esconder” ocodigo JavaScript do navegador para manter aretrocompatibilidade!

<html><body>

<s c r i p t type="text/javascript"><!−−

document . w r i t e ("Hello World!" ) ;//−−></ s c r i p t>

</body></ html>

6 / 72 Ivo Calado IFAL

Programacao Web

Page 13: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Onde colocar o codigo JavaScript?

No HEAD?

Scripts colocados na secao HEAD nao sao executadosimediatamente e devem ser localizados em funcoes!

<html><head><s c r i p t type="text/javascript">f u n c t i o n message ( ){a l e r t ("This alert box was called with the onload event"

) ;}</ s c r i p t></head><body onload="message()"></body></ html>

7 / 72 Ivo Calado IFAL

Programacao Web

Page 14: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Onde colocar o codigo JavaScript?

No Body?

Se voce nao deseja que seu script esteja em uma funcao ouque ele seja destinado a escrever conteudo na tela entaocoloque-o na secao body!

<html><head></head><body>

<s c r i p t type="text/javascript">document . w r i t e ("This message is written by

JavaScript" ) ;</ s c r i p t>

</body></ html>

8 / 72 Ivo Calado IFAL

Programacao Web

Page 15: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Onde colocar o codigo JavaScript?

Usando em um arquivo externo?

Se voce deseja compartilhar seu codigo JavaScript entrediversas paginas, pode-se fazer uso de uma pagina externa

<html><head>

<s c r i p t type="text/javascript" s r c="xxx.js"></s c r i p t>

</head><body onload="helloworld()"></body>

</ html>

9 / 72 Ivo Calado IFAL

Programacao Web

Page 16: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Comandos

Uso do ponto e vırgula

Em JavaScript, e facultativo o uso do ; (ponto e vırgula) paradelimitar o fim de um comando!

<html><body>

<s c r i p t type="text/javascript">document . w r i t e ("Fim de linha COM ponto e virgula" ) ;document . w r i t e ("Fim de linha SEM ponto e virgula" )

</ s c r i p t></body>

</ html>

10 / 72 Ivo Calado IFAL

Programacao Web

Page 17: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Comandos

Pulando linha em JavaScript

Como voce deve ter percebido no exemplo anterior, as duasfrases ficaram na mesma linha

Este comportamento acontece porque toda saıda de enviadapelo JavaScript e tratata como codigo HTML. Por isso,deve-se fazer uso do “<br/>” ao final da frase

document . w r i t e ("Fim de linha COM ponto e virgula <br

/>" ) ;document . w r i t e ("Fim de linha SEM ponto e virgula <br

/>" )

11 / 72 Ivo Calado IFAL

Programacao Web

Page 18: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Comandos

Comentarios de linhas e multilinhas

JavaScript oferece dois tipos de comentarios “//” e “/* */”A semantica e a mesma do que acontece em linguagens comoJava e C++

<html><body><s c r i p t type="text/javascript">/∗The code below w i l l w r i t e

one h e a d i n g∗/document . w r i t e ("<h1>This is a heading </h1>" ) ;</ s c r i p t></body></ html>

12 / 72 Ivo Calado IFAL

Programacao Web

Page 19: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Usando variaveis

Variaveis em JavaScript tem a mesma semantica que emoutras linguagens, isto e, armazenar informacoes na memoria

Assim como o restante do JavaScript, sao case-sensitive

Podem ser iniciadas por [aA-zZ], ou $

A partir do segundo caracter poder ser dos seguintes tipos[aA-zZ], [0-9], ou $

13 / 72 Ivo Calado IFAL

Programacao Web

Page 20: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Exemplo do uso de variaveis

<html><body>

<s c r i p t type="text/javascript">v a r f i r s t n a m e ;f i r s t n a m e="Hege" ;document . w r i t e ( f i r s t n a m e ) ;document . w r i t e ("<br />" ) ;f i r s t n a m e="Tove" ;document . w r i t e ( f i r s t n a m e ) ;

</ s c r i p t></body>

</ html>

14 / 72 Ivo Calado IFAL

Programacao Web

Page 21: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Uso de variaveis nao declaradas

E possıvel atribuir valores a variaveis ainda nao declaradas.

<html><body>

<s c r i p t type="text/javascript">f i r s t n a m e="Hege" ;

</ s c r i p t></body>

</ html>

Nestes caso, a variavel e criada no momento da atribuicao!

15 / 72 Ivo Calado IFAL

Programacao Web

Page 22: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Arrays

Em JavaScript e possıvel criar array para armazenamento dediversos tipos de objetos

Os objetos nao precisam ser do mesmo tipo

Existem 4 tipos de instanciacao!

v a r myCars=new Array ( ) ;v a r myCars=new Array ( 1 0 ) ;v a r myCars=new Array ("Saab" ,"Volvo" ,"BMW" ) ;v a r myCars=["Saab" ,"Volvo" ,"BMW" ] ;

16 / 72 Ivo Calado IFAL

Programacao Web

Page 23: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Indexando arrays

Assim como Java, arrays em JavaScript sao indexados a partirda posicao 0

v a r myCars=["Saab" ,"Volvo" ,"BMW" ] ;document . w r i t e ( myCars [ 0 ] ) // Imprime Saab

17 / 72 Ivo Calado IFAL

Programacao Web

Page 24: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Unindo arrays

Em JavaScript e possıvel unir dois arrays de maneira bastantesimples

<s c r i p t type="text/javascript">v a r p a r e n t s = [ "Jani" , "Tove" ] ;v a r c h i l d r e n = [ "Cecilie" , "Lone" ] ;v a r f a m i l y = p a r e n t s . c o n c a t ( c h i l d r e n ) ;document . w r i t e ( f a m i l y ) ;</ s c r i p t>

18 / 72 Ivo Calado IFAL

Programacao Web

Page 25: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Unindo todos elementos de um array em uma string

E possıvel unir todos os elementos de um array em uma unicastring atraves do metodo join

v a r f r u i t s = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;document . w r i t e ( f r u i t s . j o i n ( ) + "<br />" ) ; // U t i l i z a o

s e p a r a d o r padr ao ","

document . w r i t e ( f r u i t s . j o i n ("+" ) + "<br />" ) ; // U t i l i z ao s e p a r a d o r passado por par ametro

document . w r i t e ( f r u i t s . j o i n (" and " ) ) ; // U t i l i z a os e p a r a d o r passado por par ametro

</ s c r i p t>

19 / 72 Ivo Calado IFAL

Programacao Web

Page 26: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Exercıcio

Pesquisar e criar exemplos para os seguintes metodos de um array:

push

pop

reverse

shift

slice

sort

unshift (se possıvel, testar no Firefox e IE)

20 / 72 Ivo Calado IFAL

Programacao Web

Page 27: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

O objeto String

Em JavaScript o objeto String possui as seguintespropriedades/metodos

length

toUpperCase()

big()

small()

bold()

italics()

fixed()

strike()

etc21 / 72 Ivo Calado IFAL

Programacao Web

Page 28: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Exercıcio para casa!

Pesquisar a utilizacao dos objetos:

Date

Boolean

Math

RegExp

22 / 72 Ivo Calado IFAL

Programacao Web

Page 29: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Operadores aritmeticos

JavaScript oferece 7 operadores aritmeticos (+, -, *, /, %,++, –)

Alem disso, sao oferecidos os operadores de atribuicaocorrespondentes (=, +=, -=. *=, /= e %=)

23 / 72 Ivo Calado IFAL

Programacao Web

Page 30: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Operadores aritmeticos

JavaScript oferece 7 operadores aritmeticos (+, -, *, /, %,++, –)

Alem disso, sao oferecidos os operadores de atribuicaocorrespondentes (=, +=, -=. *=, /= e %=)

23 / 72 Ivo Calado IFAL

Programacao Web

Page 31: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Concatenacao de strings

O operador “+” pode ser utilizado tambem no processo deconcatenacao de strings

Se pelo menos um dos operandos for uma string entao serarealizado a concatenacao

v1 = 20v2 = "11"

v3 = v1 + v2

Ira resultar na string 2011 e nao no numero 31!!!

24 / 72 Ivo Calado IFAL

Programacao Web

Page 32: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Operadores de comparacao

JavaScript especifica 7 operadores de comparacao: ==,===, !=, >, <, >=, <= e

<s c r i p t type="text/javascript">x = 5p r i n t l n ( x == 5)p r i n t l n ( x == "5" )p r i n t l n ( x === 5)p r i n t l n ( x === "5" )

</ s c r i p t>

3 operadores logicos: &&, ||, !

25 / 72 Ivo Calado IFAL

Programacao Web

Page 33: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Operadores de comparacao

JavaScript especifica 7 operadores de comparacao: ==,===, !=, >, <, >=, <= e

<s c r i p t type="text/javascript">x = 5p r i n t l n ( x == 5)p r i n t l n ( x == "5" )p r i n t l n ( x === 5)p r i n t l n ( x === "5" )

</ s c r i p t>

3 operadores logicos: &&, ||, !

25 / 72 Ivo Calado IFAL

Programacao Web

Page 34: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Usando variaveis

Operadores ternario

Assim como Java e C++, em JavaScript e possıvel fazer uso dooperador ternario.

Qual o resultado da variavel valor apos a execucao do seguintescript?

<s c r i p t type="text/javascript">x = 5v a l o r = ( x != 5) ? "string de teste" : 10

</ s c r i p t>

26 / 72 Ivo Calado IFAL

Programacao Web

Page 35: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

Expressoes condicionais: if-else

A utilizacao da estrutura de selecao if-else e semelhante aJava

i f ( c o n d i t i o n ){

s t a t e m e n t 1 ;s t a t e m e n t 2 ;

} // Os d o i s comandos s ao e x e c u t a d o si f ( c o n d i t i o n )

s t a t e m e n t 1 ;s t a t e m e n t 2 ;s t a t e m e n t 3 ;

// Apenas o p r i m e i r o comando e e x e c u t a d o

27 / 72 Ivo Calado IFAL

Programacao Web

Page 36: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

Exemplo if-else

<html><body><s c r i p t type="text/javascript">v a r d = new Date ( ) ;v a r t ime = d . getHours ( ) ;i f ( t ime < 12){document . w r i t e ("<b>Bom dia </b>" ) ;} e l s edocument . w r i t e ("<b>Boa tarde </b>" ) ;</ s c r i p t></body></ html>

28 / 72 Ivo Calado IFAL

Programacao Web

Page 37: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

Exercıcio

Criar uma pagina HTML que possua um script JavaScript que fazuso da funcao Math.random() para gerar numeros aleatorios ecaso o valor for maior que 0.5 criar o link para a pagina do Google.Caso contrario, redirecionar para a pagina globo.com .

29 / 72 Ivo Calado IFAL

Programacao Web

Page 38: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

Exercıcio II

Altere o exemplo if.html para que, dependendo da horaobtida no sistema seja impressa a aula atual (1a, 2a, 3a,intervalo, 4a, 5a, 6a).

Sabe-se que o metodo getMinutes() do objeto Date retornaos minutos atuais e getHours() retorna a hora atual.

30 / 72 Ivo Calado IFAL

Programacao Web

Page 39: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

O comando For

Em JavaScript, a estrutura for segue a mesma sintaxe dalinguagem Java

f o r ( v a r=s t a r t v a l u e ; v a r<=e n d v a l u e ; var=var+i n c r e m e n t ){

// c o d i g o a s e r e x e c u t a d o}

As estruturas while e do-while seguem a mesma estrutura dalinguagem JavaScript

31 / 72 Ivo Calado IFAL

Programacao Web

Page 40: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

O comando For

Em JavaScript, a estrutura for segue a mesma sintaxe dalinguagem Java

f o r ( v a r=s t a r t v a l u e ; v a r<=e n d v a l u e ; var=var+i n c r e m e n t ){

// c o d i g o a s e r e x e c u t a d o}

As estruturas while e do-while seguem a mesma estrutura dalinguagem JavaScript

31 / 72 Ivo Calado IFAL

Programacao Web

Page 41: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

Exercıcio

Implemente uma pagina Web que escreva os 6 tipos decabecalhos fazendo uso do comando for

32 / 72 Ivo Calado IFAL

Programacao Web

Page 42: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

Controles de fluxo adicionais

break, continue e for..in

Qual a diferenca entre break e continue

continue interrompe a iteracao atual e inicia na proxima iteracao.break interrompe todo o loop.

33 / 72 Ivo Calado IFAL

Programacao Web

Page 43: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

Controles de fluxo adicionais

break, continue e for..in

Qual a diferenca entre break e continue

continue interrompe a iteracao atual e inicia na proxima iteracao.break interrompe todo o loop.

33 / 72 Ivo Calado IFAL

Programacao Web

Page 44: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Controle de fluxo

for..in

A estrutura for..in tem a mesma semantica do for extendidodo Java

Visa realizar iteracao sobre arrays e listas

v a r x ;v a r mycars = new Array ( ) ;mycars [ 0 ] = "Saab" ;mycars [ 1 ] = "Volvo" ;mycars [ 2 ] = "BMW" ;f o r ( x i n mycars ){document . w r i t e ( mycars [ x ] + "<br />" ) ;}

34 / 72 Ivo Calado IFAL

Programacao Web

Page 45: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Caixa de dialogo e Ciclo devida das variaveis

35 / 72 Ivo Calado IFAL

Programacao Web

Page 46: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Caixas Popup

Caixas Popup

JavaScript oferece tres tipos de caixas de dialogo

AlertBox: tem como objetivo informar ao usuario algumamensagem

ConfirmBox: recebe uma entrada do usuario a partir daconfirmacao

PromptBox: recebe uma entrada do usuario a partir de umaentrada de texto

36 / 72 Ivo Calado IFAL

Programacao Web

Page 47: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Caixas Popup

Alert Box

<head><s c r i p t type="text/javascript">f u n c t i o n s h o w a l e r t ( ){a l e r t ("Hello! I am an alert box!" ) ;}</ s c r i p t></head><body><i nput type="button" o n c l i c k="show_alert()" va lue="Show

alert box" /></body>

37 / 72 Ivo Calado IFAL

Programacao Web

Page 48: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Caixas Popup

Confirm Box

<html> <head><s c r i p t type="text/javascript">

f u n c t i o n s h o w c o n f i r m ( ) {v a r r=c o n f i r m ("Press a button!" ) ;i f ( r==t r u e ) {

a l e r t ("You pressed OK!" ) ;} e l s e {

a l e r t ("You pressed Cancel!" ) ;}

}</ s c r i p t> </head><body>

<i nput type="button" o n c l i c k="show_confirm()" va lue="Show a confirm box" />

</body> </ html>

38 / 72 Ivo Calado IFAL

Programacao Web

Page 49: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Caixas Popup

Prompt Box

<html><head><s c r i p t type="text/javascript">f u n c t i o n d i s p p r o m p t ( ) {

v a r fname=prompt ("Please enter your name:" ,"Your name

" )a l e r t ( fname ) ;

}</ s c r i p t></head><body><i nput type="button" o n c l i c k="disp_prompt()" va lue="

Display

a prompt box" /></body> </ html>

39 / 72 Ivo Calado IFAL

Programacao Web

Page 50: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Funcoes

Funcoes

Funcoes em JavaScript tem o mesmo proposito que emlinguagens como Java e C++

Possibilitam o reuso de codigo

Funcoes podem ser definidas no HEAD, BODY ou numarquivo externo .js, porem recomenda-se nao adicionar nasecao BODY

f u n c t i o n nome da funcao ( var1 , var2 , . . . , varX ){

some code}

40 / 72 Ivo Calado IFAL

Programacao Web

Page 51: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Funcoes

Ciclo de vida de variaveis em JavaScript

Se voce declara uma variavel dentro de uma funcao, ela teraescopo apenas local e quando a funcao for finalizada avariavel sera destruıda

Contudo, variaveis criadas fora de funcoes podem servisualizadas de qualquer parte da pagina, chamadas variaveisglobais e existem desde o momento que a pagina e carregadaate quando ela for fechada

41 / 72 Ivo Calado IFAL

Programacao Web

Page 52: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Eventos

42 / 72 Ivo Calado IFAL

Programacao Web

Page 53: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Eventos

Eventos sao acoes que podem ser detectadas em JavaScript

A partir da implementacao de eventos, podemos criar paginasdinamicas

Cada elemento em HTML tem um proprio conjunto deeventos que podem ser capturados

A especificacao dos eventos que serao “escutados” e definidonas tags HTML

43 / 72 Ivo Calado IFAL

Programacao Web

Page 54: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Exemplos de Eventos

Clique do mouse

Carregamento de uma pagina Web ou imagem

Mover o mouse sobre uma certa area da pagina Web

Selecionar um campo de entrada de dados em um formulario

Submeter um formulario

Eventos sao normalmente usados em combinacoes com funcoes e,portanto, a funcao nao sera executado ate que o evento sejalancado

44 / 72 Ivo Calado IFAL

Programacao Web

Page 55: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Exemplos de Eventos

Clique do mouse

Carregamento de uma pagina Web ou imagem

Mover o mouse sobre uma certa area da pagina Web

Selecionar um campo de entrada de dados em um formulario

Submeter um formulario

Eventos sao normalmente usados em combinacoes com funcoes e,portanto, a funcao nao sera executado ate que o evento sejalancado

44 / 72 Ivo Calado IFAL

Programacao Web

Page 56: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Eventos OnLoad e OnUnload

Esta classe de eventos sao lancados no carregamento e nofechamento de uma pagina HTML

OnLoad geralmente e utilizado para checar o tipo de browserutilizado ou a versao do navegador

Um outro uso seria setar Cookies quando o usuario entra ousai da pagina Web

45 / 72 Ivo Calado IFAL

Programacao Web

Page 57: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Eventos OnFocus, OnBlur e OnChange

OnFocus e OnBlur sao eventos complementares. O primeiro elancado quando um elemento ganha foco e o segundo quandoperde foco

Onchange, por sua vez, e lancado apenas se o conteudo doelemento tiver sido alterado

46 / 72 Ivo Calado IFAL

Programacao Web

Page 58: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Evento OnSubmit

Evento lancado antes de um fomulario ser enviado

Geralmente usado para fazer a validacao dos campos doformulario

<form method="post" a c t i o n="destino.htm" onsubmit="

return checkForm()">

47 / 72 Ivo Calado IFAL

Programacao Web

Page 59: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Eventos OnMouseOver e OnMouseOut

Controlam quando o mouse entra e sai de um componenterespectivamente

<a h r e f="http://www.google.com.br/" onMouseOver="mouse

(); return true">g o o g l e</a><a h r e f="http://g1.globo.com/" onMouseOut="mouse2();

return true">G1</a>

48 / 72 Ivo Calado IFAL

Programacao Web

Page 60: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Eventos

Evento OnClick

Evento lancado quando o usuario clica em um componentevisıvel da tela

Um exemplo de utilizacao e em botoes de submissao. Caso afuncao JavaScript retorne falso o formulario nao e submetido

<i nput type="submit" o n c l i c k="return checkForm();"

va lue="Submeter" i d="input3"/>

49 / 72 Ivo Calado IFAL

Programacao Web

Page 61: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Tratamento de excecoes

Tratamento de Excecoes

50 / 72 Ivo Calado IFAL

Programacao Web

Page 62: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Tratamento de excecoes

Tratamento de excecoes

Assim como outras linguagens de programacao, JavaScriptoferece suporte ao tratamento de erros atraves do uso deexcecoes

A sintaxe em JavaScript e bastante semelhante ao queacontece em C++ e Java

t r y {// Bloco que pode l a n c a r e x c e c a o

} c a t c h ( ex ) {// Tratamento de e x c e c a os t r = ex . message // r e c u p e r a o e r r o gerado

}

51 / 72 Ivo Calado IFAL

Programacao Web

Page 63: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Tratamento de excecoes

A clausula throw

Alem de capturar excecoes, podemos lanca-las

Para tal, fazemos uso da clausula throw

Ela possui a mesma semantica do comando analogo, em Java,throw!

i f ( x>10){

throw "Err1" ;} e l s e

i f ( x<0) {throw "Err2" ;

}

52 / 72 Ivo Calado IFAL

Programacao Web

Page 64: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Tratamento de excecoes

Exercıcio! :)

Pesquisar sobre o objeto navigator

Qual a funcao deste objeto?

O objeto navigator contem todas as informacoes sobre o browservisitante, como:

Nome da aplicacao

Versao do navegador

Plataforma

etc

53 / 72 Ivo Calado IFAL

Programacao Web

Page 65: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Tratamento de excecoes

Exercıcio! :)

Pesquisar sobre o objeto navigator

Qual a funcao deste objeto?

O objeto navigator contem todas as informacoes sobre o browservisitante, como:

Nome da aplicacao

Versao do navegador

Plataforma

etc

53 / 72 Ivo Calado IFAL

Programacao Web

Page 66: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

Tratamento de excecoes

Exercıcio 2! :)

Pesquisar sobre eventos relacionados a tempo

setTimeout e clearTimeout

54 / 72 Ivo Calado IFAL

Programacao Web

Page 67: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

HTML DOM

55 / 72 Ivo Calado IFAL

Programacao Web

Page 68: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

O que e?

O que e?

De acordo com o W3C o DOM (Documento Object Model) edefinido como:”The W3C Document Object Model (DOM) is a platform andlanguage-neutral interface that allows programs and scripts todynamically access and update the content, structure, and style ofa document.”

Em resumo HTML DOM == HTML + DOM

56 / 72 Ivo Calado IFAL

Programacao Web

Page 69: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

O que e?

O que e?

De acordo com o W3C o DOM (Documento Object Model) edefinido como:”The W3C Document Object Model (DOM) is a platform andlanguage-neutral interface that allows programs and scripts todynamically access and update the content, structure, and style ofa document.”

Em resumo HTML DOM == HTML + DOM

56 / 72 Ivo Calado IFAL

Programacao Web

Page 70: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

O que e?

O que e?

De acordo com o W3C o DOM (Documento Object Model) edefinido como:”The W3C Document Object Model (DOM) is a platform andlanguage-neutral interface that allows programs and scripts todynamically access and update the content, structure, and style ofa document.”

Em resumo HTML DOM == HTML + DOM

56 / 72 Ivo Calado IFAL

Programacao Web

Page 71: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Em outras palavras...

Trata-se de um padrao de modelagem dos elementos HTMLcomo objetos

Uma abordagem padrao para acesso e alteracao do HTMlprogramaco

Um padrao W3C

Em outras palavras: O HTML DOM e um padrao pararecuperacao, alteracao, adicao ou remocao de elementosHTML e suas propriedades

57 / 72 Ivo Calado IFAL

Programacao Web

Page 72: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Nos DOM

O DOM segue a mesma filosofia de modelagem do JDOM, ou seja:

O documento inteiro e um no

Cada elemento HTML e um no

O texto dos elementos HTML sao nos

Cada atributo do HTML e um atributo de um no

Comentarios sao nos de comentario

58 / 72 Ivo Calado IFAL

Programacao Web

Page 73: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Exemplo

<html><head>

< t i t l e>DOM T u t o r i a l</ t i t l e></head><body>

<h1>DOM Lesson one</h1><p>H e l l o w o r l d !</p>

</body></ html>

59 / 72 Ivo Calado IFAL

Programacao Web

Page 74: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Navegando entre a hierarquia de nos

60 / 72 Ivo Calado IFAL

Programacao Web

Page 75: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Propriedades basicas de um elemento HTML DOM

x.innerHTML - conteudo textual de x

x.nodeName - o nome de x

x.nodeValue - o valor do x

x.parentNode - referencia ao elemento pai de x

x.childNodes - Nos filhos de x

x.attributes - nos atributos de x

61 / 72 Ivo Calado IFAL

Programacao Web

Page 76: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

A propriedade innerHTML

E utilizado para recuperar ou substituir o conteudo de umelemento HTML, inclusive <html> e <body>

Pode ser utilizada tambem para visualizar o codigo fonte deuma pagina alterada dinamicamente

<p i d="intro">H e l l o World !</p>

<s c r i p t type="text/javascript">t x t=document . getE lementById ("intro" ) . innerHTML ;document . w r i t e ("<p>The text from the intro paragraph:

" + t x t + "</p>" ) ;</ s c r i p t>

62 / 72 Ivo Calado IFAL

Programacao Web

Page 77: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Propriedades childNodes e nodeValue

Uma segunda forma de obtencao e a partir da combinacao daspropriedades childNodes e nodeValue

<p i d="intro">H e l l o World !</p>

<s c r i p t type="text/javascript">t x t=document . getE lementById ("intro" ) . c h i l d N o d e s [ 0 ] .

nodeValue ;document . w r i t e ("<p>The text from the intro paragraph:

" + t x t + "</p>" ) ;</ s c r i p t>

63 / 72 Ivo Calado IFAL

Programacao Web

Page 78: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Acessando Nos

Existem basicamente tres forma de acessar os nos da arvoreHTML:

getElementById

getElementByTagName

Navegando na estrutura dos nos

64 / 72 Ivo Calado IFAL

Programacao Web

Page 79: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

getElementById

Trata-se do metodo mais utilizado para recuperacao de valores

Recebe como o id do objeto a ser acessado

Ver exemplo...

65 / 72 Ivo Calado IFAL

Programacao Web

Page 80: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

getElementsByTagName

Retorna todos os elementos da tag passada por parametro

document . getElementsByTagName ("p" ) ; // Retorna t o d o sos e l e m e n t o s p do HTML

Qual o significado do codigo abaixo?

document . getE lementById ( ’ main ’ ) . getElementsByTagName ("p" ) ;

Os itens podem sao indexados como em um vetor!!

66 / 72 Ivo Calado IFAL

Programacao Web

Page 81: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

getElementsByTagName

Retorna todos os elementos da tag passada por parametro

document . getElementsByTagName ("p" ) ; // Retorna t o d o sos e l e m e n t o s p do HTML

Qual o significado do codigo abaixo?

document . getE lementById ( ’ main ’ ) . getElementsByTagName ("p" ) ;

Os itens podem sao indexados como em um vetor!!

66 / 72 Ivo Calado IFAL

Programacao Web

Page 82: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

getElementsByTagName

Retorna todos os elementos da tag passada por parametro

document . getElementsByTagName ("p" ) ; // Retorna t o d o sos e l e m e n t o s p do HTML

Qual o significado do codigo abaixo?

document . getE lementById ( ’ main ’ ) . getElementsByTagName ("p" ) ;

Os itens podem sao indexados como em um vetor!!

66 / 72 Ivo Calado IFAL

Programacao Web

Page 83: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Exercıcio

Criar um formulario que antes de ser submetido sera checado porvalores vazio. E caso isso ocorra, cancele a transmissao e imprimaum texto na cor vermelha indicando que houve erro.

67 / 72 Ivo Calado IFAL

Programacao Web

Page 84: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Alterando as propriedades de um elemento

Ate agora vimos como alterar o conteudo de um elementoHTML via propriedade innerHTML

Porem, e possıvel alterar o conteudo diretamente sem“reescrever” um novo HTML

<html><body><s c r i p t type="text/javascript">

document . body . b g C o l o r="lavender" ;</ s c r i p t></body></ html>

68 / 72 Ivo Calado IFAL

Programacao Web

Page 85: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Exemplo 2

<html><body><p i d="p1">H e l l o World !</p><s c r i p t type="text/javascript">document . getE lementById ("p1" ) . innerHTML="New text!" ;</ s c r i p t></body></ html>

69 / 72 Ivo Calado IFAL

Programacao Web

Page 86: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Mudando um elemento a partir de eventos

E possıvel alterar uma propriedade diretamente a partir dolancamento de um evento

<html><body><i nput type="button" o n c l i c k="document.body.bgColor=’

lavender ’;"

va lue="Change background color" /></body></ html>

70 / 72 Ivo Calado IFAL

Programacao Web

Page 87: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

JavaScript + CSS

Em JavaScript as regras CSS podem ser customizadasdurante a execucao

Para isso, faz-se uso da propriedade style de cada elemento

<s c r i p t type="text/javascript">f u n c t i o n C h a n g e S t y l e ( ){

document . getE lementById ("p1" ) . s t y l e . c o l o r="blue" ;document . getE lementById ("p1" ) . s t y l e . f o n t F a m i l y="Arial

" ;}</ s c r i p t>

71 / 72 Ivo Calado IFAL

Programacao Web

Page 88: Javascript

Introducao Basico do JavaScript JavaScript avancado JavaScript avancado II

HTML DOM

Exercıcio

Altere o exercıcio anterior para que as propriedades sejamcustomizadas via CSS

72 / 72 Ivo Calado IFAL

Programacao Web