Digitaalisen median tekniikat. Luento 4: JavaScript

Samankaltaiset tiedostot
Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat JavaScript Harri Laine 1

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

Digitaalisen median tekniikat Luento 1: Intro

2. PEHMEÄ XHTML XRAJAHTML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Digitaalisen median tekniikat. Luento 3: CSS

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

Olio-ohjelmointi Javalla

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML

ICT1TN004. Skriptikielet. Heikki Hietala

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

JavaScript alkeet. Intro Muuttujat Dialogi boxit. Metropolia 2011

JavaScript alkeet Esimerkkikoodeja moniste 2

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Java-kielen perusteet

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Olio-ohjelmointi Syntaksikokoelma

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

TIEDEJUTTUKURSSI FM VILLE SALMINEN

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Java-kielen perusteet

Digitaalisen median tekniikat. Palvelinohjelmointi Harri Laine 1

(JavaScript) Aleksi O Connor DI Informaatioverkostot. Markku Laine Mediatekniikan laitos

Digitaalisen median tekniikat. Palvelinohjelmointi

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

Digitaalisen median tekniikat JavaScript_osa Harri Laine 1

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Ohjelmointiharjoituksia Arduino-ympäristössä

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Mikä yhteyssuhde on?

Digitaalisen median tekniikat, k2004 HY/TKTL, palvelinohjelmointi_1 21/04/2004. Harri Laine 1. Palvelinohjelmointi. Staattinen www-sivu

Java-kielen perusteet

Harri Laine 1. Digitaalisen median tekniikat, s2007 HY/TKTL, palvelinohjelmointi_1. Palvelinohjelmointi

Digitaalisen median tekniikat JavaScript_osa2

Javan perusteita. Janne Käki

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä

Harjoitustyö: virtuaalikone

4. Luokan testaus ja käyttö olion kautta 4.1

Verkkosivujen toiminnallisuus (JavaScript)

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Alkuun HTML5 peliohjelmoinnissa

Digitaalisen median tekniikat. Luento 6: Esteettömyys ja saavutettavuus

7. Näytölle tulostaminen 7.1

Laajuus 5 op Luennot: 12 x 2t Harjoitukset: 7 viikkoharjoitusta harjoitusten tekemiseen saatavissa apua 2 ryhmää / harjoitus

Hohde Consulting 2004

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Helsingin Sanomat ipad

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Digitaalisen median tekniikat, s2007 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

Palvelinpuolen ohjelmointi

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Taulukot. Jukka Harju, Jukka Juslin

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

15. Ohjelmoinnin tekniikkaa 15.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

7. Oliot ja viitteet 7.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Luento 5. Timo Savola. 28. huhtikuuta 2006

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

WWW-Sivustojen suunnittelu. Miten WWW toimii. Suunnittelun lähtökohdat

Ohjelmoinnin peruskurssi Y1

WWW-Sivustojen suunnittelu

7/20: Paketti kasassa ensimmäistä kertaa

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Ohjelmoinnin peruskurssien laaja oppimäärä

9. Periytyminen Javassa 9.1

JS-kehitys - yleiskuvaus. TIEA255 - Juho Vepsäläinen

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Oliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Digitaalisen median tekniikat xhtml - jatkuu

11/20: Konepelti auki

Harjoitus 5 (viikko 48)

Ohjelmoinnin perusteet Y Python

5/20: Algoritmirakenteita III

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö.

Luento 3: Tietorakenteiden esittäminen


Transkriptio:

Digitaalisen median tekniikat Luento 4: JavaScript

Luennot 1. Intro 2. XHTML 3. CSS 4. JavaScript Historia Syntaksi Dom Esimerkki: kuvagalleria 5. JavaScript-kirjastot & AJAX 6. Käytettävyys & saavutettavuus 7. Palvelinohjelmointi (PHP) 8. PHP jatkuu + pelkkiä kysymyksiä luento 9. Video- ja kuvaformaatit 10. Quirks 11. Hyviä, mutta vähän käytettyjä web-standardeja 12. Yhteenveto

HUOM. Kuinka moni ei ole tehnyt JavaScriptiä? Ensimmäisten harjoituksien kyselyn 113 vastauksesta 66 ei ole tehnyt JavaScriptiä Yli puolet! Meillä on nyt vain 2h aikaa, siinä ajassa ehditään päästä vain alkuun Luentojen teoriaa on tiivistetty edellisistä vuosista Sillä JavaScriptiä oppii vain tekemällä Se ei kuitenkaan ole vaikeaa! JavaScript was influenced by many languages and was designed to look like Java, but be easier for non-programmers to work with. (wikipedia) Toisella luentotunnilla: koodataan!

Historia JavaScriptillä ei ole mitään tekemistä Javan kanssa. Toistetaan vielä: JavaScriptillä ei ole mitään tekemistä Javan kanssa paitsi ehkä samankaltainen syntaksi. 1995 Brendan Eich kehittää Mochan Nimetään myöhemmin LiveScriptiksi ja sittemmin JavaScriptiksi 2005 Ajax (Asynchronous JavaScript and XML) 1999 XMLHttpRequest Internet Explorer 5.0 JavaScript otetaan vakavammin tekniikkana 2009 JavaScript moottorit kilpailevat nopeudessa

Yleinen kuvaus Asiakaspuolen tulkattava skriptikieli Tapahtumapohjainen Voi reagoida selaimen tapahtumiin, kuten klikkauksiin Tyypillisiä käyttökohteita: Sivun muokkausta dynaamisesti Kommunikointi palvelimen kanssa Lomakkeiden tarkistus ym. (käytettävyys) Ärsyttävät efektit

Rajoitukset Ei voida lukea asiakaskoneen paikallisia tiedostoja eikä muutakaan laitteistoa. Eikä käsitellä palvelimella sijaitsevia tiedostoja suoraan. Cross site estetty Sama alkuperä turvallisuusmittana Sisältöä saa ladata ainoastaan samalta sivustolta, jolla skriptiä suoritetaan.

Syntaksi Java/C tyylinen Case sensitive Lauseen erottimena ; tai rivinvaihto Kommentit /* Ensimmäinen JavaScript esimerkki: Tervehditään käyttäjää HÄLYTYSLAATIKOLLA! */ function tervehdys(nimi) { alert( Hei + nimi); } // Kutsutaan tervehdystä tervehdys( Brendan );

Operaattorit + on kuormitettu alfa + beta alfabeta 1 + beta 1beta 1 + 2 + alfa 3alfa Vertailu on pääasiassa kuten Javassa Merkkijonoja voi verrata samoilla operaattoreilla kuin lukuja sama == sama

Kummalliset asiat mahdollisia // nyt tehdään kummia asioita function tervehdys(nimi) { alert( Hei + nimi); } // Kutsutaan tervehdystä tervehdys( Brendan ); // Edelleen toimii, vaikka parametrit eivät täyty tervehdys(); // määritellään tervehdys muuttujaksi var tervehdys = hei hei ; // ok, muuttuja on edelleen ok alert(tervehdys); // funktio onkin nyt muuttuja! // määritellään tervehdys uudestaan var tervehdys; alert(tervehdys); // arvo on edelleen hei hei! Huom! Jos et pidä näitä kummallisina, niin ei haittaa. Opit varmasti helposti JavaScriptiä silti!

Tietotyypit Luvut Kokonaisluvut, liukuluvut NaN = not a number Merkkijonot näin tai näin tai hän sanoi näin Erikoismerkit kuten\tjavassa\n Totuusarvot true ja false Laskennassa 1 ja 0 (true+true = 2) if ( null undefined 0 ) { ei } if ( epätyhjä && Window && 1 ) { kyllä! }

Muuttujat Määritellään: var muuttuja = arvo var eka = 1, toka = 2 Voi määritellä myös ilman var sanaa, mutta ei tehdä näin (kohta lisää) Tyypittämättömät Tyyppi voi vaihtua ja sitä ei voi määritellä Tyyppimuunnokset automaattisia Eksplisiittiset tyyppimuunnokset: parseint( 20 noin ) 20 parsefloat( 21.20 on tarkempi ) 21.20 parseint( noin 20 ) NaN typeof(muuttuja) kertoo tyypin typeof(2) number undefined ellei alkuarvoa anneta (var muuttuja;) undefined == null

Näkyvyys Periaatteessa funktioiden sisällä määritellyt muuttujat ovat paikallisia ja ulkopuolella määritellyt ovat globaaleja. Asiaa kannattaa kuitenkin kokeilla: var globaali = maailmanlaajuinen ; function kokeilu() { alert(globaali); // undefined! var globaali = paikallinen ; alert(globaali); // alert: paikallinen } kokeilu(); alert(globaali); // alert: maailmanlaajuinen! var globaali = maailmanlaajuinen ; function kokeilu() { alert(globaali); // maailmanlaajuinen globaali = paikallinen ; alert(globaali); // alert: paikallinen } kokeilu(); alert(globaali); // alert: paikallinen!

Funktiot Toisin kuin Javassa, JavaScriptissä voidaan määritellä irrallisia funktioita. Eli: funktion ei tarvitse olla luokan sisällä Paluuarvon tyyppiä ei voida määritellä. Parametritkaan eivät ole niin pakollisia. function kokeilu(eka,toka) { if (eka) alert(eka); if (toka) alert(toka); return eka+toka; } palautus1 = kokeilu("moi", "hei"); // palauttaa moihei palautus2 = kokeilu( moi ); // palauttaa moiundefined palautus3 = kokeilu(); // palauttaa NaN! (koska undefined + undefined = NaN)

Oliot Hmm! Kielessä on Olion käsite, mutta ei esimerkiksi periytymistä Olioista puhutaan tarkemmin seuraavalla luentokerralla Oliot ovat kokoelma nimettyjä ominaisuuksia (kohta lisää) this kuten Javassa Poisto olioavaruudesta delete():llä

Oliot function Song() { } abba = new Song(); abba.name = "Waterloo"; alert(abba.name); var abba = { name: "Waterloo" }; alert(abba.name); var abba = new Object(); abba.name = Waterloo ; alert(abba.name); var abba = { name: "Waterloo", play: function() { alert( Playing +this.name); } }; alert(abba.name); abba.play();

Oliot function Heppa(nimi){ this.vaihdanimi = function(nimi){ this.nimi = nimi; }; // Jotta uuden olion luonnissa parametrina annettu nimi asettuu this.vaihdaname( name ); } var polle= new Heppa( Polle"); // Luodaan uusi olio Luokasta alert(polle.nimi); // Alertbox: Polle polle.vaihdanimi( Super-Polle"); alert(polle.nimi); // Alertbox: Super-Polle Esimerkki otettu http://www.ejohn.org :sta jossa on paljon edistynyttä matskua

Taulukot Yleinen rakenne JavaScriptissä. Taulukon koko on dynaaminen: ei tarvitse määrittää ennalta. Taulukon käyttöön kannattaa tutustua. Seuraava kalvo.

Taulukot var taulu = new Array(); taulu[0] = 1; taulu[1] = 2; var toinen = [3,2,1]; toinen.sort(); alert(toinen); // alert: 1,2,3 taulu.push(3); alert(taulu); // alert: 1,2,3 taulu.pop(); alert(taulu); // alert: 1,2 alert(taulu.length); // alert: 2 var assosiatiivinen = new Array(); assosiatiivinen[ eka ] = 1; assosiatiivinen[ toka ] = 2; alert(assosiatiivinen[ eka ]); // alert: 1

Tapahtumat Tapahtumat (events) mahdollistavat käyttäjän toimintoihin ja sivun tapahtumiin reagoinnin. <img src= kuva.jpg onclick= avaaikkuna(); /> <body onload= rasittavatervetulotoivotus(); > Huom: näin eventtejä ei tulisi kuitenkaan käyttää!

JavaScriptin liittäminen <script type="text/javascript" src="javascripts/ulkoinen.js"></script> <script type= text/javascript > <!-- piilotetaan vanhemmilta selaimilta? alert( hei! ); // < huomaa JS kommentti! --> </script> <img src= kuva.jpg alt= kuva onclick= avaakuva(this); return false; /> <a href= javascript:alert( JS pseudoprotokolla! ); >Klikkaa</a>

Selainluokat Selain tarjoaa omia luokkia window, document, history Esimerkkejä: window.location = http://www.example.com ; Vaihtaa selaimen osoitekentän osoitteen ja siirtyy sivulle document.body Sisältää dokumentin DOM-puun body oksan DOM-puu: Document Object Model Dokumentin rakenne puu-esityksenä, jota voi käsitellä JavaScriptillä tai millä tahansa

DOM-puu BOM: Browser Object Model DOM Level 0 Document Object Model DOM Level 1: Esim. document.body ja getelementbyid(); (harjoituksissa 3 piirretään DOM Level 1 puu)

DOM-metodeja getelementbyid( taulukot ) Hae elementti id:n taulukot perusteella getelementsbytagname( a ) Hae elementit tagin perusteella (palauttaa taulukon) createelement( p ) Luo paragraph elementin elementti.setattribute( src, kuva.jpg ) Asettaa elementin attribuutin src arvoksi kuva.jpg Näitä tutkitaan kohta esimerkin kanssa

Työkalut JSLint: DEMO http://www.jslint.com Firebug laajennos Web Developer laajennos

Testaus Nyt mennään rajoille! Jos kiinnostaa niin mm: http://ejohn.org/blog/fireunit/ Jos ei, niin ei tarvitse!