SlideShare a Scribd company logo
Javascript [7]
Matteo Magni
Spesso ci capita di dover riscrivere più volte
    lo stesso codice per fare la stessa
                operazione.
Developer
     Ma il programmatore è
     tendenzialmente un pigro.

     Sceglierò sempre un pigro
     per fare un lavoro difficile,
     perché troverà sempre un
     modo facile per farlo
     (Bill Gates)
Programmazione funzionale
         Per questo nasce la
         programmazione funzionale
         che ci permette di riutilizzare
         tutte le volte che ci serve una
         porzione di codice senza
         doverla riscrivere.
         Non è l'unico vantaggio, ma
         sicuramente il più immediato.
Function
                        function pippo() {
Una funzione è una
                          // javascript code
porzione di codice
                        } 
che viene eseguita
solo quando è           pippo();
richiamata attraverso
il suo nome.
Function
                        function sum(first, 
Una funzione può        second) {
avere dei parametri       result first + 
in ingresso e un        second;
valore di ritorno, al     return result;
fine di essere          } 
parametrizzabile e di
poter gestire i suoi    alert(sum(1+2));
risultati
Visibilità variabili
Infatti se usiamo "var"
                                                            Tale variabile è dichiarata
all’interno di una funzione,                                (definita e agisce) solo all’interno
dichiariamo una variabile "solo"                            della variabile. Se invece
interna alla funzione (locale).                             rimuovete "var a" da dentro la
                                                            funzione, andrete a modificare la
a = 100;                                                    variabile a globale
function cambiaA(){                                         a = 100;
                                                            function cambiaAA(){
var a;
                                                            a=10;
a=10;
                                                            }
}
                                                            alert(a);
alert(a);
                 http://blog.merlinox.com/la-visibilit-delle-variabili-javascript/
Come facciamo a interagire con l'utente?
Attraverso gli eventi, cioè qualcosa che
        accade nel documento.
Eventi
<TAG nomeEvento=”Javascript da eseguire”>


<h1 id="myHeader" onclick="getValue()">Click 
me!</h1>
Oggetto Event


   L'oggetto event permette di ottenere
informazioni sull'evento appena scaturito,
 come l'elemento che lo ha generato, o la
           posizione del mouse.
Event

Possiamo utilizzarlo dentro alla
dichiarazione dell'evento, ad esempio:
<a
onmouseover="alert('Il mouse è alla posizione ' + 
event.screenX + ', ' + event.screenY +  'dello schermo');"
>
link
</a>

       http://it.wikibooks.org/wiki/JavaScript/Gli_eventi_nel_DOM
Oggetto Event
Rispetto all'utilizzo di questo oggetto, bisogna fare attenzione
quando si richiama da delle funzioni handler: l'oggetto event
infatti ha una visibilità privata, non può quindi essere richiamato
esternamente alla dichiarazione dell'evento. Per ovviare a
questo problema è sufficiente passare l'oggetto event come
argomento. Ad esempio, si crea la funzione:
function posizione (e) {
alert('Il mouse è alla posizione ' + e.screenX + ', ' + e.screenY +  
'dello schermo');
}
Nell'HTML si inserirà:
<a href="pagina.html" onmouseover="posizione(event);">link</a>
Proprietà Event
• timestamp (funziona solo su FF) restituisce la data e l'ora in cui si è verificato l'evento;
• target e relatedTarget (srcElement e toElement su Internet Explorer) restituiscono rispettivamente il nodo che ha generato l'evento e
  il nodo su cui probabilmente sarà il mouse dopo che l'evento si sarà concluso (ad esempio è utile per gli eventi mouseOut). Quando si
  usano queste proprietà bisogna prima controllare il browser in uso dall'utente (vedi questa pagina);
• altKey, ctrlKey e shiftKey indicano rispettivamente se è premuto il tasto alt, ctrl o shift mentre avviene evento;
• button indica quale pulsante del mouse è stato premuto (0 il tasto sinistro, 1 quello destro);
• clientX e clientY indicano le posizioni del cursore rispetto alla finestra del browser (a partire dall'angolo in altro a destra);
• screenX e screenY indicano le posizioni del cursore rispetto allo schermo dell'utente (a partire dall'angolo in altro a destra).
Esempio
    
<script>
function EventFunc(e) {
  var target = e.target;
  target.style.color = 'red';
}
</script>
</head>
<body>
Event<br/>
<a onclick="EventFunc(event);" >link</a>
</body>
Tipi di eventi
Load
• onload → quando l'oggetto è
  completamente caricato [body, img]
<img src=”pippo.jpg” 
onload=”alert(‘pippo’);”>
Mouse
• onmouseover → quando il mouse passa
  sopra l'elemento
<a onmouseover=”alert(‘pippo’);”>
• onmouseout → quando il mouse esce
  fuori dall'area sensibile
<a onmouseout=”alert(‘pippo’);”>
Click
• onclick → quando l'utente clicca
  sull'elemento
<a onclick=”alert(‘pippo’);”>
Form - input
• onkeypress → quando in un input type
  viene premuto un tasto della tastiera
<textarea onkeypress=”alert(‘pippo’);”>
• onchange → quando l'elemento cambia
<select onchange=”alert(‘pippo’);”>
…
</select>
Form - input
• onsubmit → quando si invia la form
<form name=”pippo” onsubmit=”alert(‘pippo’);”>
• onfocus → quando l'elemento diventa attivo
<input type=”text” onfocus=”alert(‘pippo’);”>
• onblur → quando l'elemento non è più attivo
<input type=”text” onblur=”alert(‘pippo’);”>
Possiamo gestire gli eventi in modo migliore?
           <a onclick=”alert(‘pippo’);”>


Vogliamo separare il codice delle
varie tecnologie...
Tutto nel JS
<input type="button" value="Pippo" id="pippo" />


<script type="text/javascript">
//devo omettere le parentesi richiamando la funzione 
alertPippo (function pointer)
document.getElementById("pippo").onclick = 
alertPippo;


function alertPippo(){
    alert("pippo");
}
</script>
addEventListener

addEventListener() permette di impostare
delle funzioni che verranno chiamate al
verificarsi dell'evento specificato,
sull'oggetto specificato(target dell'evento).


https://developer.mozilla.org/it/docs/DOM/element.addEventListener
Esempio
<input type="button" value="Pippo" id="pippo" />
<script type="text/javascript">
var pippo = document.getElementById("pippo");
pippo.addEventListener("click", alertPippo, false);
pippo.addEventListener("click", alertHello, false);
           function alertPippo() {
                 alert("pippo");
           }
           function alertHello() {
                 alert("hello");
           }
</script>
Why?
Perchè usare addEventListener?

addEventListener è il modo corretto per
registrare un listener, come da specifica
W3C. I suoi benefici sono:

• permette di aggiungere diversi handler
  per singolo evento.
• Dà un controllo migliore di cosa
  succede quando il listener viene
  attivato(capturing vs bubbling)
• funziona con qualunque elemento
  DOM, non solo con gli elementi HTML.
Esempio
   <style type="text/css">
                                                  <body onload="load();"> 
     #t { border: 1px solid red }
     #t1 { background­color: pink; }
                                                  <table id="t"> 
   </style>
   <script type="text/javascript">
                                                    <tr><td 
                                                 id="t1">one</td></tr> 
   // Function to change the content of t2
   function modifyText() {                          <tr><td 
     var t2 = document.getElementById("t2");
     t2.firstChild.nodeValue = "three";    
                                                 id="t2">two</td></tr> 
   }
                                                  </table>
 
   // Function to add event listener to t
   function load() { 
     var el = document.getElementById("t"); 
     el.addEventListener("click", modifyText, 
false); 
   } 
Internet Explorer?

//fino alla versione 8 ie ha un suo 
//metodo attachEvent...


if (el.addEventListener){
  el.addEventListener('click', 
modifyText, false); 
} else if (el.attachEvent){
  el.attachEvent('onclick', 
modifyText);
}
Rimuovere eventi

Se serve posso
anche rimuovere gli
eventi attraverso il
metodo:
removeEventListene
r
Le form sono il principale metodo che ha
     l'utente per interagire con il sito.
Form
document.form
Oggetto .form
                      • document.forms[x].comando
E' un array che ci      accede form nella pagina n. x
consente di             (conteggio parte da 0)
                      • document.forms["xxxx"].coman
accedere a tutte le     do accede al form con
form nella pagina.      name="xxxx"
                      • document.xxxx.comando forma
                        abbreviata per accede al form
                        con name="xxxx"
Proprietà form
                      https://developer.mozilla.org/it/docs/DOM/form
form.elements
Restituisce una collezione dei controlli contenuti form corrente.
form.length
Restituisce il numero di controlli contenuti nel form corrente.
form.name
Restituisce una stringa con con il valore dell'attributo name del form corrente.
form.acceptCharset
Restituisce una lista dei set di caratteri supportati per il form corrente.
form.action
Restituisce/setta l'URI a cui verranno spediti i dati del form.
form.enctype
Restituisce/setta il tipo di contenuto che il form corrente invierà al server.
form.method
Restituisce/setta il metodo con cui inviare le informazioni al server.
form.target
Restituisce/setta il nome del frame in cui rendere la pagina di risposta del server.
Metodi Form

form.submit
Invia il form.
form.reset
Riporta il form al suo stato iniziale.
Domande?

                  Slide:
     http://cypher.informazione.me/
                  Code:
https://github.com/inFormazione/Cypher/
                   mail:
            matteo@magni.me

More Related Content

PDF
Javascript - 7 | WebMaster & WebDesigner
PPTX
corso web developer - Introduzione a Javascript
PPTX
Write less do more...with jQuery
PDF
Lezione 12 (28 marzo 2012)
PDF
Javascript - 8 | WebMaster & WebDesigner
PDF
Ajax Primi Passi Per Iniziare
PDF
Ajax Primi Passi Per Iniziare
PDF
JavaScript Object Oriented
Javascript - 7 | WebMaster & WebDesigner
corso web developer - Introduzione a Javascript
Write less do more...with jQuery
Lezione 12 (28 marzo 2012)
Javascript - 8 | WebMaster & WebDesigner
Ajax Primi Passi Per Iniziare
Ajax Primi Passi Per Iniziare
JavaScript Object Oriented

What's hot (17)

PPT
8 Algoritmi
PDF
Introduzione a JavaScript
PDF
Lezione 12 (28 marzo 2012)
PDF
Php mysql3
PDF
Cattive abitudini e-lineeguida
PDF
Php mysql e cms
PPTX
06 2 vector_matrici
PDF
Ajax e jQuery
PPT
iContract
PPT
PDF
C(99) gtk 04 - label,button e entry
ODP
Pycon Jungle
PDF
C(99) gtk 03 - le immagini
PDF
C(99) gtk 02 - disporre gli oggetti
PDF
Esercitazione 4 (19 marzo 2012)
PDF
Introduzione a node.js
8 Algoritmi
Introduzione a JavaScript
Lezione 12 (28 marzo 2012)
Php mysql3
Cattive abitudini e-lineeguida
Php mysql e cms
06 2 vector_matrici
Ajax e jQuery
iContract
C(99) gtk 04 - label,button e entry
Pycon Jungle
C(99) gtk 03 - le immagini
C(99) gtk 02 - disporre gli oggetti
Esercitazione 4 (19 marzo 2012)
Introduzione a node.js
Ad

Viewers also liked (7)

PDF
Javascript - 1 | WebMaster & WebDesigner
PDF
Javascript - 3 | WebMaster & WebDesigner
PDF
jQuery - 5 | WebMaster & WebDesigner
PDF
Javascript - 5 | WebMaster & WebDesigner
PDF
Javascript - 6 | WebMaster & WebDesigner
PDF
jQuery - 3 | WebMaster & WebDesigner
PDF
HTML5 e Css3 - 7 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
Javascript - 3 | WebMaster & WebDesigner
jQuery - 5 | WebMaster & WebDesigner
Javascript - 5 | WebMaster & WebDesigner
Javascript - 6 | WebMaster & WebDesigner
jQuery - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 7 | WebMaster & WebDesigner
Ad

Similar to Javascript - 7 | WebMaster & WebDesigner (20)

PDF
JavaScript
PDF
Javascript - 4 | WebMaster & WebDesigner
PDF
Intro to JavaScript
PDF
Javascript - 4 | WebMaster & WebDesigner
PPTX
Lezione 11 - Javascript
ODP
PDF
PHP Introduzione a javascript e validazione
PDF
Introduzione a java script
PDF
Corso Javascript
ODP
Rich Ajax Web Interfaces in Jquery
PPTX
Programmare con javascript
PDF
jQuery - 1 | WebMaster & WebDesigner
PPTX
Presentazione JavaScript
ODP
Oo Javascript
PDF
jQuery - 4 | WebMaster & WebDesigner
PDF
Le funzioni in javascript
PDF
jQuery - 1 | WebMaster & WebDesigner
PPT
Javascript Camp - Listener Per Eventi
PPTX
Javascript avanzato: sfruttare al massimo il web
JavaScript
Javascript - 4 | WebMaster & WebDesigner
Intro to JavaScript
Javascript - 4 | WebMaster & WebDesigner
Lezione 11 - Javascript
PHP Introduzione a javascript e validazione
Introduzione a java script
Corso Javascript
Rich Ajax Web Interfaces in Jquery
Programmare con javascript
jQuery - 1 | WebMaster & WebDesigner
Presentazione JavaScript
Oo Javascript
jQuery - 4 | WebMaster & WebDesigner
Le funzioni in javascript
jQuery - 1 | WebMaster & WebDesigner
Javascript Camp - Listener Per Eventi
Javascript avanzato: sfruttare al massimo il web

More from Matteo Magni (20)

PDF
Introduzione DevOps con Ansible
PDF
HTML5 e Css3 - 6 | WebMaster & WebDesigner
PDF
HTML5 e Css3 - 5 | WebMaster & WebDesigner
PDF
HTML5 e Css3 - 4 | WebMaster & WebDesigner
PDF
HTML5 e Css3 - 3 | WebMaster & WebDesigner
PDF
HTML5 e Css3 - 2 | WebMaster & WebDesigner
PDF
HTML5 e Css3 - 1 | WebMaster & WebDesigner
PDF
jQuery - 4 | WebMaster & WebDesigner
PDF
jQuery - 2 | WebMaster & WebDesigner
PDF
Javascript - 2 | WebMaster & WebDesigner
PDF
Web Usability - 3 | WebMaster & WebDesigner
PDF
Web Usability - 2 | WebMaster & WebDesigner
PDF
Web Usability - 1 | WebMaster & WebDesigner
PDF
Seo e Web Marketing - 5 | WebMaster & WebDesigner
PDF
Seo e Web Marketing - 4 | WebMaster & WebDesigner
PDF
Seo e Web Marketing - 3 | WebMaster & WebDesigner
PDF
Seo e Web Marketing - 2 | WebMaster & WebDesigner
PDF
Seo e Web Marketing - 1 | WebMaster & WebDesigner
PDF
Html e Css - 3 | WebMaster & WebDesigner
PDF
Html e Css - 2 | WebMaster & WebDesigner
Introduzione DevOps con Ansible
HTML5 e Css3 - 6 | WebMaster & WebDesigner
HTML5 e Css3 - 5 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 2 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner
jQuery - 4 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesigner
Javascript - 2 | WebMaster & WebDesigner
Web Usability - 3 | WebMaster & WebDesigner
Web Usability - 2 | WebMaster & WebDesigner
Web Usability - 1 | WebMaster & WebDesigner
Seo e Web Marketing - 5 | WebMaster & WebDesigner
Seo e Web Marketing - 4 | WebMaster & WebDesigner
Seo e Web Marketing - 3 | WebMaster & WebDesigner
Seo e Web Marketing - 2 | WebMaster & WebDesigner
Seo e Web Marketing - 1 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner

Javascript - 7 | WebMaster & WebDesigner