Programmazione web lato client con JavaScript

Transcript

Programmazione web lato client con JavaScript
Programmazione web
lato client
con JavaScript
Marco Camurri
1
JavaScript
●
●
●
●
●
E' un LINGUAGGIO DI PROGRAMMAZIONE che
consente di inserire codice in una pagina web
Sintassi simile a Java (e al C) , ma NON E' Java
Codice inserito direttamente nella pagina HTML o in file
collegati ( estensione .js )
E' un linguaggio INTERPRETATO : il browser intepreta ed
esegue il codice presente nella pagina ( se abilitato ... )
E' un linguaggio di programmazione web LATO CLIENT
( al contrario di PHP, che è un esempio di linguaggio LATO SERVER )
Marco Camurri
2
Pagina HTML dinamica con JavaScript
apri esempio
<html> <body>
<img id="lampada" onclick="cambiaImmagine()" src="spenta.gif" >
<script>
function cambiaImmagine()
{
var imm = document.getElementById('lampada');
if ( imm.src.match("accesa.gif") ) {
imm.src = "spenta.gif";
JavaScript può
}
modificare
else {
gli attributi degli
imm.src = "accesa.gif";
elementi HTML
}
a seguito di eventi
}
</script>
(es. click)
</body>
</html>
Marco Camurri
3
Un esempio per iniziare
<html>
<head> </head>
<body>
<h1> PRIMO ESEMPIO </h1>
<button onclick="saluta( )" >
CLICCA QUI
</button>
<script>
function saluta() {
alert( " ciao! " );
}
</script>
apri esempio
</body>
</html>
Marco Camurri
4
JavaScript esterno alla pagina
E' possibile collocare il codice JavaScript in un file esterno:
function saluta() {
<html>
alert( " ciao! " );
<head>
<script src="miofile.js" />
</head>
}
...
function controlla() { ... }
<body>
<h1> PRIMO ESEMPIO </h1>
<button onclick="saluta( )" >
function somma(x,y) { ... }
...
CLICCA QUI
</button>
miofile.js
</body>
</html>
miofile.html
Marco Camurri
5
Librerie JavaScript (Frameworks)
Lo script JavaScript esterno pò trovarsi anche su un
altro server sul web
●
Esistono diverse librerie JavaScript (frameworks):
insiemi di funzioni già scritte che semplificano la
creazione di applicazioni complesse
●
Marco Camurri
6
Ora sappiamo che ...
●
il codice JS va inserito fra i tag <script> e </script>
( all'interno di head o body, ma è buona regola inserirlo SEMPRE alla fine di
body per velocizzare il caricamento della pagina )
●
il codice JS può essere organizzato in funzioni
parola
chiave
●
function nomeFunz( nomePar1, nomePar2, ... ) {
// codice della funzione
}
la funzione può essere associata ad un evento:
<button onclick="nomeFunz()" > clicca qui </button>
Marco Camurri
NON SCORDARE
LE PARENTESI !
7
Uso di variabili e commenti
<html><body>
<script>
var x,y,z;
Apri esempio
le variabili si dichiarano facendo precedere il
nome della variabile dalla parola chiave var
In JS non si specifica il TIPO delle variabili !
x = 5;
y = 6.5;
z = x + y;
alert( z );
x = "mela";
y = 'pera' ;
alert( x + y );
// alert( "fine" );
</script>
</body> </html>
Marco Camurri
In C avremmo dovuto scrivere:
int x,y,z;
oppure float x,y,z;
oppure ...
le stringhe vanno racchiuse tra apici doppi o singoli
(indifferente)
il + tra stringhe effettua la concatenazione.
Prova anche: alert( x + " " + y);
l'istruzione alert non è eseguita poichè è
all'interno di un commento. Per commenti
su più righe: /* ......
.......
*/
8
Tipi di dato in JavaScript
number
x
x
x
x
= 5;
= " ciao ";
= 4.5;
= true;
string
boolean
object
A differenza di linguaggi come il C, in
JavaScript la stessa variabile può
contenere prima un numero, poi una
stringa, poi un boolean , ecc...
il tipo di dato non è legato alla variabile,
ma al valore della variabile in un dato istante.
così il programmatore non deve preoccuparsi
troppo del tipo dei dati
Marco Camurri
....
MA ....
9
Tipi di dato (segue)
apri esempio
.... MA ATTENZIONE: il tipo di dato determina il modo in
cui alcune operazioni sono effettuate!
var x = 5;
var y = 6;
alert(x+y);
mostra:
11
var x = "5";
var y = 5;
if ( x == y )
alert( "vero" );
else
alert( "falso" );
Marco Camurri
var x = "5";
var y = "6";
alert(x+y);
mostra:
56
var x = "5";
var y = 6;
alert(x+y);
mostra:
56
la "somma" tra una stringa e un
numero viene interpretata come
concatenazione tra stringhe.
VERO!
NOTA: esiste anche l'operatore
===
che in questo caso avrebbe
restituito "falso"
10
Confronto alfabetico e numerico
var x = 100;
var y = 2;
if ( x < y )
alert( "vero" );
else
alert( "falso" );
mostra "falso"
( come ci aspettiamo)
Marco Camurri
var x = "100";
var y = "2";
if ( x < y )
alert( "vero" );
else
alert( "falso" );
ATTENZIONE ! ! !
la stringa "100" in
ordine alfabetico
viene prima della
stringa "2"
ordinamento
numerico:
ordinamento
alfabetico:
1
10
50
70
101
691
146572
1
10
101
146572
50
691
70
11
Le funzioni parseInt e parseFloat
la funzione parseInt riceve come argomento una stringa e
restituisce il numero intero corrispodente ( per numeri con virgola
esiste la funzione parseFloat ).
var x = "100", y = "2", a, b ;
a = parseInt( x ); // ora a contiene 100
b = parseInt( y ); // ora b contiene 2
if ( x < y ) confronto alfabetico
alert( "vero" );
else
alert( "falso" );
if ( a < b )
confronto numerico
alert( "vero" );
else
alert( "falso" );
Marco Camurri
apri esempio
Si può usare la stessa variabile
come input e output di parseInt:
x="103";
x = parseInt( x );
// ora x contiene 103 (numero)
12
il valore "Not a Number" ( NaN )
var x = "ciao";
var y = parseInt(x);
alert( y );
apri esempio
Per verificare se una variabile contiene il valore NaN occorre
utilizzare la funzione isNaN .
if ( isNaN(y) )
alert( "la variabile y non contiene un numero" );
else
alert( "la variabile y contiene il numero " + y );
Attenzione: non si può utilizzare l'operatore == o === per confrontare valori NaN,
poichè il confronto restituisce sempre valore falso. Esempio: la condizione ( y==NaN )
è sempre falsa (anche se y contiene il valore NaN).
Marco Camurri
13
Finestre di INPUT/OUTPUT
Con JavaScript è possibile aprire finestre (box) che mostrano un
messaggio all'utente o richiedono un valore all'utente.
apri esempio
alert
confirm
prompt
Marco Camurri
14
Le funzioni alert e confirm
alert:
mostra un messaggio con la sola opzione OK
var x=10, y=20;
alert( "la somma fra " + x + " e " + y + " è " + (x+y) );
confirm:
mostra un messaggio di richiesta con le opzioni OK e ANNULLA
e restituisce true se l'utente ha premuto OK
var risp;
risp = confirm(" Procedere con il pagamento ? ");
if ( risp == true )
{
// fai qualcosa...
}
else { /* fai qualcos'altro...*/ }
Marco Camurri
15
La funzione prompt
prompt: apre una finestra contenente un messaggio e un campo
di testo in cui l'utente può scrivere.
Se l'utente preme ok, la funzione restituisce una stringa
che corrisponde al testo digitato (eventualmente "" ).
Se preme ANNULLA, la funzione restituise il valore null .
var nome = prompt(" Come ti chiami ? ");
if ( nome != null )
alert( "ti chiami" + nome );
else
alert( "hai premuto annulla" );
Marco Camurri
null è un altro valore
speciale presente in
JavaScript (come NaN).
Il valore null indica
assenza di informazione
16
il valore undefined
oltre a NaN e null, esiste un terzo valore "speciale“: undefined
Una variabile contiene il valore undefined quando non le è mai stato
assegnato un valore.
var x;
alert(x); // mostra undefined perchè x non è mai
// stata inizializzata
Marco Camurri
17
Operatori
Aritmetici
Logici
Relazionali
+
addizione
== uguale
!
NOT
-
sottrazione
!=
diverso
&&
AND
*
moltiplicazione
>
maggiore
||
OR
/
divisione
>= maggiore o uguale
% modulo
<
minore
<= minore o uguale
Assegnamento
Incremento / Decremento
=
assegnamento
++
incremento
+=
somma e assegnamento
--
decremento
-=
sottrazione e assegnamento
/=
divisione e assegnamento
*=
moltiplicazione e assegnamento
Marco Camurri
18
Strutture di controllo
if ... else
ciclo for
var punteggio;
if ( punteggio == 100 )
alert( "livello superato" );
else
alert( "hai perso" );
var i;
for( i=0; i<100; i++ ) {
alert( "Conta: " + i );
}
ciclo do-while
apri esempio
var numero;
do {
n = parseInt( prompt("Inserisci un numero fra 1 e 1000") );
}
while( ( isNaN(n) ) || ( n < 0 ) || ( n > 1000) );
Marco Camurri
19