6. Inhoud van de cursus
Formulieren
Verplichte invoervelden
Controle email-adres
Berekenen tekstvelden
7. Inhoud van de cursus
Formulier validatie
Cookies
Windows
8. JavaScript vs. Java
• JavaScript • Java
– Netscape – Sun
– Interpreted – Compiled
– Vnl. browser nodig – Stand-Alone of browser
9. Waarom JavaScript leren ?
Enige scripting taal die door alle grote browsers
ondersteund wordt:
Netscape Navigator
Microsoft Internet Explorer (Jscript)
Firefox Mozilla
Opera
…
VBScript enkel ondersteund door Internet Explorer
10. Soorten JavaScript
Browser Netscape Microsoft
versie Navigator Internet Explorer
2 JavaScript 1.0 -
3 JavaScript 1.1 JScript 1.0
4 JavaScript 1.2 JScript 3.0
5 Jscript 4.0
6 JavaScript 1.5
NB : ECMAScript
11. Client-side vs Server-side Scripting
Client-side
uitgevoerd in de browser
gebruiker kan het script zien
soorten : VBScript (alleen I.E.)
JavaScript (I.E. en N.N.)
vb : controle op formulieren
mouse-over effecten
cookies
12. Client side versus Server side
http cgi
Web Web CGI
browser server Script
Client Server
13. Client-side vs Server-side Scripting
Server-side
uitgevoerd op de server
gebruiker kan het script niet zien (pure HTML)
soorten : ASP, JSP, PHP, Coldfusion
CGI (Perl, JavaScript,…)
vb : gegevens uit database opzoeken
doorsturen
formulieren verwerken
29. Voorbeelden data types
var nummer= 42;
var tekst1=“wat was de vraag”;
Var tekst2=“42”;
Var bool=true;
Var obj=document.getElementById(‘demo’);
30. NULL
Meestal -> “no object”
var x = document.getElementById(“bestaatNiet”);
Alert (x);
x=>null
31. UNDEFINED
Variabele declaren zonder een waarde toe te wijzen
var y
een onbestaande eigenschap opvragen van een
object.
alert(window.mooiweer)
Een parameter van een functie gebruiken zonder dat
er een waarde naar toe is gestuurd
function test(parameter){…..}
test();
37. Opgelet : haakjes sluiten
if (getal < 10)
{
document.write(″Het getal is kleiner dan 10″);
}
Opm.: Accolades mogen soms weggelaten worden, maar maakt het de
ontwikkelaar achteraf moeilijker om eventuele fouten te
zoeken.
38. Opgelet : Commentaar
//Commentaar kan op één regel geplaatst worden
/*Commentaar kan evenwel ook op meerdere regels geplaatst worden
Programmeurs gebruiken commentaar voornamelijk om de logica achter
hun code weer te geven zodat wanneer het programma later (door
iemand anders) moet geupdated worden men de logica van de
oorspronkelijke programmeur nog kan volgen.)
*/
39. Variabelen en functienamen
Voorwaarden geldige benaming
1ste karakter moet een letter van het alfabet , underscore (_) of
dollarteken ($) zijn.
Geen spaties in de naam
Geen gereserveerde woorden
Niet : mijn Variabele
Wel : mijnVariabele
mijn_Variabele
40. Gereserveerde woorden
Bepaalde woorden maken deel uit van de JavaScript
taal.
Deze kunnen niet als namen voor variabelen of
functies gebruikt worden.
vb. : alert, case, Date, default, else, function, length, name, new,
print, self,…
41. Variabelen
camelCase geen standaard wel good practice
var keyword
var a=1;
b=2;
a is expliciet geclareerd, b is impliciet
gevolgen voor de variabelen scoop
impliciet zijn altijd global
42. Variabelen Scope
Scope : 'bereik' van een variabele. Waar is een
variabele gekend.
Global scope en local scope
global : variabel is gekend in het ganse script
local : alleen binnen een functie
43. creatie van locale variabelen
expliciet declaratie met het keyword var in een
functie
als een parameter bij de definitie van je functie
Alle andere variabelen zijn global
var boodschap=quot;helloquot;;
function doeiets(){
alert (boodschap)
}
44. locale ? globale
function doeiets(){
var boodschap=quot;helloquot;;
alert (boodschap)
}
function doeiets(){
boodschap=quot;helloquot;;
alert (boodschap)
}
doeiets(quot;helloquot;);
function doeiets(bericht){
alert (bericht)
}
56. do while
initialisatie;
while(test){
statements;
aanpassing;
}
initialisatie;
do {
statements;
aanpassing;
} while(test);
57. Break & continue
Break
alleen in een switch en in loops
stop onmiddellijk met deze code block
Continue
Alleen maar in loops
ga verder met de volgende iteratie
61. confirm
if (confirm(quot;wil je je naam om het scherm zienquot;))
{
doe de true statements -> ze hebben op ok
}
else
{
doe de false -> ze hebben op cancel
}
63. Return
Een functie keert steeds terug na uitvoering naar de
plaats waar dit is opgeroepen.
We kunnen dit ook expliciet doen door het keyword
return te gebruiken
We kunnen ook een waarde mee terug sturen vaak
het resultaat van een functie
return resultaat;
64. Arrays
Is een verzameling van waardes die geindexeeerd
zijn met een nummer.
var scores=new Array();
scores[0]=14;
scores[1]=11;
scores[2]=19;
scores[3]=13;
66. push pop shift unshift
NIET bij IE5!
var scores=[12,12,31,'5',true,quot;tekstquot;];
var x=quot;waarde in array te zettenquot;
scores.unshift(x); - x is het eerste element in array
scores.push(x); x is het laaste element in array
var a = scores.shift(); bevat het eerste element vd
array, maar dit element maakt geen deel vs array uit
var b = scores.pop(); bevat het laatste element vd
array, maar dit element maakt geen deel vs array uit
70. Value
Elk form element kan een waarde hebben die we
kunnen ophalen
document.forms[0].elements[1].value of
document.forms[0].elements['naam'].value of
document.formulier.naam.value
radio en checkboxen moeten eerst nagekeken
worden welke geselecteerd zijn om dan de value op
te halen
72. event handler
function init(){
var x = document.forms[0].radios;
for (var i=0;i<x.length;i++)
addEvent(x[i],'click',berekenPrijs)
function addEvent(obj,type,fn)
{
if (obj.addEventListener)
obj.addEventListener(type,fn,false);
else if (obj.attachEvent)
obj.attachEvent(quot;onquot;+type,fn);
}
}
73. Event handler
Hoe weet je welk element het event heeft gestuurd ?
function berekenPrijs(e) {
var evt = e || window.event;
var evtTarget = evt.target || evt.srcElement;
var waardeElement=evtTarget.value;
…
}
75. innerHTML <->Dom methods
Binnen XHTML is document.write niet aanbevolen
alertnatieven zijn dom methods
of innerhtml
<span id=quot;nieuwquot;></span>
el=document.gelElementById(“nieuwquot;);
el.innerHTML=quot;kijk eens hierquot;;
77. Pro innerHTML
Convinient and fast.
Easy to use and understand.
Works in general situations where some factors are
unknown.
Great for writing data to a node, This could take
along time with the DOM.
In situations where you need innerHTML, nothing
else will do
innerHTML is significantly faster than the DOM in
Gecko and IE
78. contra innerHTML
It is NOT a W3C DOM standard. It won't likely become one
either.
The DOM is more powerful.
Its name contains HTML, although it could be used for
SGML/XML documents.
It is lazy and can produce unstructured, lazy code.
It can lead new developers away from learning about text nodes.
Code will become hard to port to XML apps and won't be future
proof.
Should the browser be parsing HTML strings and creating
nodes?!
innerHTML can mean structural data inside the behavioural
element of your app.
innerHTML is very buggy (to say the least) in the Gecko browsers.
80. dynamische popup
On the fly generatie van een pop window
propsVenster=quot;width=quot;+breedte+quot;,height=quot;+hoogte+quot;,top=150,left=150,screenX=150,scr
eenY=150,status=yes,menubar=yes,scrollbars=yes,toolbar=yes,resizable=yesquot;
nieuwWelkom=window.open(quot;quot;,quot;popup2quot;,propsVenster)
var win='<!DOCTYPE html PUBLIC quot;-//W3C//DTD XHTML 1.0 Transitional//ENquot;
quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdquot;> n';
win+='<html xmlns=quot;http://www.w3.org/1999/xhtmlquot;>n';
win +='<head>n';
win +='<meta http-equiv=quot;Content-Typequot; content=quot;text/html; charset=iso-8859-1quot; />n';
win +='<title>Popup Welkom</title>n';
win +='</head>n';
win +='<body>n';
win +='t<h1>Welkom '+naam+'</h1>n'
win +='</body>n';
win +='</html>n';
nieuwWelkom.document.write(win);
nieuwWelkom.document.close();
81. Cookies
Gebruik van cookies
het onthouden van loginnaam of instellingen
het vergaren van surfinformatie
het koppelen van een browser aan tijdelijke variabelen op de
server (session cookie)
82. Cookies
Tekstbestand opgeslagen op locale pc
kan slechts uitgelezen worden door de
server(domain) dat de cookie geplaatst heeft
Heeft steeds een vervaldatum, indien niet aanwezig
session cookie die vervalt bij het afsluiten van
browser
83. Werken met cookies
schrijven van cookie
document.cookie = quot;naam=quot;+value+vervaldatum;
functie nodig om cookie te lezen
84. lezen van een cookie
function getCookie(naam)
{
var zoek = naam + quot;=quot;;
if (document.cookie.length > 0)
{
waarde = document.cookie.indexOf(zoek);
if (waarde != -1)
{
waarde += zoek.length;
einde = document.cookie.indexOf (quot;;quot;, waarde);
if (einde == -1)
einde = document.cookie.length;
return unescape (document.cookie.substring(waarde, einde));
}
}
}
87. Een element zoeken
2 methodes
getElementById() & getElementsByTagName()
->lange afstandzoeken door het ganse document
Parentnode en gelijkaardige eigenschappen
->korte afstandzoeken node per node
91. nodeName
onverwacht is dit de naam van de node
naam van een text node is steeds #tekst
naam van een document node is steeds #document
!! de naam van de node is steeds in HOOFDLETTERS zelfs als
het in kleine letters staat in de html
92. nodeValue
bij tekst bevat nodeValue de effectieve inhoud
<p>ik ben een javascript expert</p>
var x = [de bewuste p]
var text=x.firstChild.nodeValue;
96. InsertChild
function insert(){
var x=document.getElementsByTagName('p')[0];
var y=document.getElementsByTagName('h1')[0];
x.parentNode.insertBefore(x,y);
}
98. replaceChild
function replaceIt(){
var x=document.getElementsByTagName('h1')[0];
var y=document.getElementsByTagName('p')[1];
x.parentNode.replaceChild(x,y);
}
99. Create element
function create(){
var x=document.createElement('p');
var y=document.createTextNode('Dit is nieuw
gecreerd');
x.appendChild(y);
document.body.appendChild(x);
}
100. Clone Element
function clone(){
var x=document.getElementsByTagName('h1')[0];
var y=x.cloneNode(true);
document.body.appendChild(y);
}
101. Objecten
Opm. Objecten ook afhankelijk
van browser type en
browser versie
http://www.devguru.com
103. Ajax
AJAX is een manier om interactieve webapplicaties te
ontwikkelen door een combinatie van de volgende
technieken te gebruiken:
XHTML en CSS voor de presentatie volgens de standaarden
van het W3C
Het Document Object Model voor het dynamisch tonen van
informatie en voor interactie.
XML en XSLT voor de opslag, aanpassing en transport van
gegevens. In sommige gevallen wordt dit vervangen door JSON
(JavaScript Object Notation).
Het XMLHttpRequest object voor asynchrone communicatie
met de back-end server.
JavaScript om alles aan elkaar te binden.
104. XMLHTTP
XMLHTTP is een groep API's die kan worden gebruikt
door Javascript om XML of andere data te versturen van
en naar een webserver met HTTP.
Het grootste voordeel van XMLHTTP is de mogelijkheid
om webpagina's dynamisch te updaten zonder de hele
pagina te vernieuwen en zonder gebruik te maken van
plugins.
Voorbeelden van XMLHTTP applicaties zijn Googles
Gmail, Google Suggest, Microsoft Virtual Earth en
MapQuest Yahoo mail, Flickr …..
105. JSON
JSON JavaScript Object Notation
uitwisselen van datastructuren,
De eenvoud van JSON heeft geleid tot een grote
populariteit ervan.
alternatief voor XML.
geen aparte parser voor nodig.
functiebibliotheken beschikbaar voor het lezen en
schrijven van JSON-expressies.
106. Toolkits
quot;ASP.NET AJAXquot; (http://ajax.asp.net)
Google heeft de Google Web Toolkit
(http://code.google.com/webtoolkit/)
Scriptaculous (http://script.aculo.us/)
Prototype (http://prototypejs.org/),
DWR (http://getahead.org/dwr)
JQuery (http://jquery.com/)
MooTools (http://mootools.net)
The Yahoo! User Interface Library (YUI)
(http://developer.yahoo.com/yui/ )