25.4.2013 Aulikki Hyrskykari Lomakkeet Javascript perusteet Tähän asti on käsitelty miten WWW sivuja käytetään tiedon välittämiseen käyttäjälle. Lomakkeiden avulla voidaan saada tietoa toiseen suuntaan, käyttäjältä sivun julkaisijalle. Lomakkeet ovat keskeinen osa vuorovaikutteisten verkkopalvelujen toteuttamisessa, esimerkiksi o hakukoneet o verkkokaupat o informaatiopalvelut (kirjastot, tietokannat jne.) o www pohjaiset sähköpostipalvelut o mielipidekyselyt o tapahtumiin, kursseille yms. ilmoittautumiset
Lomakkeet koostuvat kahdesta osasta: (1) WWW sivulla näkyvästä, HTML:n ja CSS:n avulla määritellystä lomakkeesta ja (2) Lomakkeelle annettujen tietojen käsittelyn tekevästä ohjelmasta ("lomakkeenkäsittelijä", tallennettuna palvelimelle). Lomakkeet on koettu HTML:ssä hankaliksi, koska o muotoilu ja käsittely vaatii muita sivuelementtejä enemmän sekä CSS että Javascript koodausta HTML5:ssä tämä on pyritty ottamaan huomioon o sisältää huomattavan määrän uusia elementtejä o uusia attribuutteja lomakkeen käsittelyä varten Selaimet eivät kovin kattavasti tue vielä o HTML tulkit jättävät tunnistamattomat elementit tai attribuutit käsittelemättä o uudet ominaisuudet jäävät vain huomiotta o tulevat käyttöön sitä mukaan kun uudet selainversiot osaavat niitä tulkita
Wufoo (http://wufoo.com/html5/) o voit tarkistaa miten eri selaimet ja selainversiot tukevat HTML5 lomakkeen uusia - input tyyppejä - input attribuutteja - lomake elementtejä Sivustolla myös o esimerkkikuvia lomake elementtien toiminnasta o helppo kokeilla livenä uusien piirteiden toimintaa <form {lomake elementin attribuutit}> {elementit lomakkeen sisällä määräävät lomakkeen sisällön} {elementti, joka lähettää lomakkeen käsittelyyn (input type="submit")} </form> Lomakkeen mahdolliset attribuutit: accept charset action autocomplete novalidate target enctype method name
accept_charset: Määrittää merkistökoodauksen, jota palvelin lomakkeelta odottaa jos tämä jätetään antamatta oletuskoodaus sama kuin mitä HTMLdokumentissa on käytetty. <form accept charset="iso 8859 1"> action: Määrittää lomakkeenkäsittelijän <form action="mailaa.pl"> autocomplete : Kenttien automaattitäyttö (ehdottaa aiempia syötteitä) <form autocomplete="on"> enctype: Kenttien arvojen koodauksen määrittelymahdollisuus <form enctype="multipart/form data"> method: Lomakkeen tiedot voi lähettää verkkosovellukselle kahdella eri tavalla, get tai post metodia käyttäen. <form method= post"> name: Antaa lomakkeelle nimen, jota ohjelmat käyttävät tunnistetietona lomakeen avulla lähetettyihin tietoihin viitattaessa. Nimen tulee olla yksikäsitteinen (lomakkeiden kesken) <form name= asiakastiedot"> novalidate : Määrittää, että lomakkeelle annetuille tiedoille ei tehdä automaattista tarkistusta ennen lähetystä. <form novalidate> target: Määrittää missä lomakkeen aktivioman cgi ohjelman palauttama HTMLdokumentti näytetään <form target ="_blank >
kenttien esittelyissä saattavat globaalin id attribuutin ja lomakkeen name attribuutin roolit joskus vaikuttaa sekavilta arvojen ei välttämättä tarvitse olla samat, vaikka oyleinen käytäntö on antaa niille samat arvot <input type="checkbox" id="film" name="film" value="elokuva" /> name opakollinen jokaiselle syötekentälle oarvon avulla verkkosovellus palvelimella tunnistaa miltä elementiltä syötetieto on peräisin id okäytetään verkkosivun sisällä kenttään viittamiseksi <form {lomake elementin attribuutit}> {elementit lomakkeen sisällä määräävät lomakkeen sisällön} {elementti, joka lähettää lomakkeen käsittelyyn (input type="submit")} </form> Lomake elementin sisälle kirjoitettavat elementit määrittävät lomakkeen kentät <button> <datalist> <fieldset> <input> <legend> <keygen> <label> <meter> <optgroup> <option> <select> <textarea> <output> <progress> <input> elementin avulla voidaan esitellä suurin osa lomakkeen syötekentistä, käsitellään se seuraavassa ensin
Yleinen lomakkeen syötekenttä, type attribuutti määrittelee tarkemmin millaisesta syötekentästä on kyse. Sallittu sisältö: ei sisältöä (tyhjä elementti) Sallitut attribuutit: globaalit attribuutit, type, accept, alt, autocomplete, autofocus, checked, disabled, form, formaction, formenctype, formmethod, formnovalidate, formtarget, height, list, max, maxlength, min, multiple, name, pattern, placeholder, readonly, required, size, src, step, value, width, Sallittu äiti elementti: elementti, joka voi saada phrasing sisältöä <input type="text" id="sivu id" name="palvelin id" value="oletusarvo" /> Yhden tekstirivin syöttö, password kentässä merkit piilotetaan näkyvistä, size attribuutilla syötettävän merkkijonon pituus <fieldset> <legend>tekstiä ja salasana </legend> <label for="kja tunnus">tunnus:</label> <input type="text" name="kja tunnus" id="kja tunnus" size="22" value="anna käyttäjätunnuksesi" /> <label for="password">salasana:</label> <input type="password" name="password" id="password" size="15" /> </fieldset>
Painikkeita, joista kolme ensimmäistä ovat painikkeen näköisiä, ja neljäskin käyttäytyy kuten painike, vaikka onkin kuva o button: ei erikseen määriteltyä toiminnallisuutta, toiminnallisuus toteutettava itse esim. Javascriptillä o reset: palauttaa lomakkeen kentät alkuarvoihinsa o submit: lähettää lomakkeen tiedot käsittelyyn o image: kuten submit, mutta voidaan tehdä jostain kuvasta <input type="submit" value="lähetä" /> <fieldset> <legend>lataa tiedosto [input/type=file]</legend> <label for="lataa-tiedosto">tiedoston nimi: </label> <input type="file" name="lataa-tiedosto" id="lataa- Valintaruutu (valittu/ei valittu) <fieldset> <legend>oletko kiinostunut [input/type=checkbox]</legend> <label for="film">elokuvista</label> <input type="checkbox" name="film" id="film" value="elokuva" /> <label for="kirja">kirjallisuudesta</label> <input type="checkbox" name="kirja" id="kirja" value="kirja" /> <label for="garden">puutarhan hoidosta</label> <input type="checkbox" name="garden" id="garden" value="puutarha" /> <label for="sport">urheilusta</label> <input type="checkbox" name="sport" id="sport" value="urheilu" /> <label for="cars">autoilusta</label> <input type="checkbox" name="cars" id="cars" value="autot" /> </fieldset>
Radiopainike, ts. ryhmä valintoja, joista vain yksi voi olla valittuna <fieldset> <legend>ikäsi [input/type=radio]</legend> <label for="alle20">alle 20</label> <input type="radio" name="ika" id="alle20" value="alle20" /> <label for="20 39">20 39</label> <input type="radio" name="ika" id="20 39" value="20 39" /> <label for="40 59">40 59</label> <input type="radio" name="ika" id="40 59" value="40 59" /> <label for="yli59">yli 60</label> <input type="radio" name="ika" id="yli59" value="yli59" /> </fieldset> Kenttä, jota ei näytetä lomakkeella o voidaan käyttää arvojen tallentamiseen näkymättömiin lomakkeelle Esimerkiksi <input type="hidden" name="date submitted" value="2013 04 22"> Tyypillinen käyttö o ohjelman generoimia arvoja lomakkeelle talteen näkymättömiin o esimerkiksi kenttien tietoja niin että ne voidaan lomakkeelle palattaessa palauttaa käyttäjä ei joudu syöttämään tietoja kaikkiin kenttiin uudelleen
Uusia komponentteja: <input type = month week time date datetime datetime local > Aikaan liittyvän syötteen vastaanottamiseen o osassa on toteutettuna kalenterityyppinen käyttöliittymäkomponentti Wufoo: Käyttöliittymäkomponenti värin, verkko osoitteen, sähköpostiosoitteen ja puhelinnumeron vastaanottamiseen Wufoo:
Luvun syöttäminen tai valinta joltain väliltä (liukukontrollin avulla) ja kenttä hakulausekkeen syöttämiseksi hakukoneelle. Wufoo: accept="audio/* video/* image/* MIME_type" Määrittää (tiedoston latauskomponentin yhteydessä) minkä tyyppisiä tiedostoja, tiedoston latauskomponentin avulla hyväksytään ladattavaksi palvelimelle (ääntä, videota tai kuvia) alt= "seliteteksti kuvalle" vain image tyyppisen käyttöliittymäkomponentin yhteydessä autocomplete= "seliteteksti kuvalle" määrittää, käytetäänko syötekenttää kirjoitettaessa automaattitäydennystä autofocus [="autofocus"] määrittää että komponentti aktivoidaan sivun latauduttua (ts. tälle kentälle/painikkeelle annetaan fokus aluksi checked [=checked] käytössä syötetyyppien radio ja checkbox yhteydessä; asettaa niissä kyseisen vaihtoehdon (esi)valituksi.
disabled [= disabled ] asettaa komponentin passiiviseen tilaan, jolloin käyttäjä ei pääse muokkaamaan sen sisältöa tai napsauttamaan sitä hiirellä, passivoidun komponentin nimi/arvo paria ei välitetä palvelimelle. form= lomakkeen id" komponenetti liitetään kuuluvaksi tiettyyn lomakkeeseen (vaikka se ei olisikaan <form> elementin sisällä), näin komponentin arvo välitetään palvelimelle lomakkeen mukana vaikka se sijaitsisikin sivulla visuaalisesti lomakkeen muista komponenteista erillään formaction="lomakkeenkäsittelijä url" painikkeelle määritellä muitakin lomakkeenkäsittelijöitä kuin elementin esittelyssä annettu formenctype="application/x www form urlencoded multipart/formdata text/plain" määrittää kentästä palvelimelle lähetettävän tiedon koodauksen (käytettäessä post metodia) formmethod ="get post" painikkeelle määritelty lähetystapa, joka syrjäyttää lomakkeelle annetun lähetystavan formnovalidate[="formnovalidate"] ehkäisee lomakkeen lähetyspainikkeessa lomakkeen kenttien automaattisen tarkistuksen palvelimelle lähetettäessä formtarget="iframe nimi _blank _self _parent _top" vain image tyyppisen käyttöliittymäkomponentin yhteydessä height = ei negatiivinen luku" määrää kuvan avulla muodostetun syötekomponentin korkeuden pikseleissä list = datalist id" liittää syötekentän <datalist> elementtiin, jossa on lueteltu kenttään mahdollisesti syötettäviä arvoja, joita käytetään kun automaattinen täydentäminen ehdottaa kentälle arvoksi. max min = number date kentän suurin pienin mahdollinen arvo
maxlength= luku" määrää kuinka monta merkkiä syötekenttään maksimissaan otetaan vastaan multiple= multiple" antaa mahdollisuuden valita useamman tiedoston kerralla name= nimi" antaa komponentille nimen, jota käytetään tunnistetietona kun elementin arvo lähetetään lomakkeenkäsittelijälle pattern="säännöllinen lauseke" mahdollistaa hyväksyttävän arvon määrittelemisen säännöllisten lausekkeiden avulla placeholder= vihje kenttään voi antaa vihjeeksi alku arvon, joka esimerkiksi kehottaa antamaan syötteen tietyssä readonly [="readonly ] asettaa kentän passiiviseen tilaan, sen arvoa ei pääse muokkaamaan. required [="required"] pakollisti täytettävä kenttä: kenttään on annettava arvo ennen kuin lomakkeen voi lähettää käsittelyyn size=" positiivinen luku" kenttään näkyviin mahtuvien merkkien lukumäärä src= osoite" käytössä vain image tyyppisellä kentällä: osoite, josta kuva noudetaan value="merkkijono" käytetään rajoittamaan hyväksyttäviä syötekentän arvoja, sekä lukuarvojen rajoittamiseen että ajan painoarvon määrittämiseen width= ei negatiivinen luku" kuvan avulla muodostetun syötekomponentin leveys pikseleissä
<fieldset> Asettaa kentät lomakkeella omaksi kehystetyksi ryhmäkseen, ryhmälle voi antaa otsikon <legend> elementin avulla. Sallittu sisältö: <legend> elementti, jota voi seurata mitä tahansa flowsisältöä Sallitut attribuutit: globaalit attribuutit, name, disabled, form Sallittu äiti elementti: elementti, joka voi saada flow sisältöä <fieldset> <legend>tekstiä ja salasana</legend> <label for="kja tunnus">tunnus:</label> <input id="kja tunnus" type="text" name="kja tunnus"size="22" value="anna käyttäjätunnuksesi" /> <label for="password">salasana:</label> <input id="password" type="password" name="password"size="15" /> </fieldset> <legend Antaa lomakkeella otsikon <fieldset> kenttäryhmälle. Sallittu sisältö: mitä tahansa phrasing sisältöä Sallitut attribuutit: globaalit attribuutit Sallittu äiti elementti: kenttäryhmä, ts. <fieldset> elementti <fieldset> <legend>tekstiä ja salasana</legend> <label for="kja tunnus">tunnus:</label> <input id="kja tunnus" type="text" name="kja tunnus"size="22" value="anna käyttäjätunnuksesi" /> <label for="password">salasana:</label> <input id="password" type="password" name="password"size="15" /> </fieldset>
<label> Antaa kentälle nimikkeen. Sallittu sisältö: flow tai phrasing content. Sallitut attribuutit: globaalit attribuutit, for, form Sallittu äiti elementti: kenttäryhmä, ts. <fieldset> elementti <fieldset> <legend>tekstiä ja salasana</legend> <label for="kja tunnus">tunnus:</label> <input id="kja tunnus" type="text" name="kja tunnus"size="22" value="anna käyttäjätunnuksesi" /> <label for="password">salasana:</label> <input id="password" type="password" name="password"size="15" /> </fieldset> Syötekomponentti useamman rivin tekstille. Sallittu sisältö: merkkimuotoista tietoa Sallitut attribuutit: globaalit attribuutit, autofocus, cols, dirnamea, disabled, form, maxlength, name, placeholder, readonly, required, rows, wrap Sallittu äiti elementti: elementti, joka voi saada phrasing sisältöä <textarea id="msg" rows="10" cols="40" name="msg">
Elementti erilaisten painikkeenomaisesti toimivien komponenttien toteutukseen esimerkiksi teksti voi toimia painikkeena Sallittu sisältö: phrasing sisältöä Sallitut attribuutit: globaalit attribuutit, autofocus, disabled, form, formaction, formenctype, formmethod, formnovalidate, formtarget, name, type, value Sallittu äiti elementti: elementti, joka voi saada phrasing sisältöä <button name="kentan id">nimesi:</button> <select> <option> <optgroup> Toteuttaa valintalistan Sallittu sisältö: nolla tai enemmän <optiongroup> ja <option>elementtejä Sallitut attribuutit: globaalit attribuutit, autofocus, disabled, form, multiple, name, required, size Sallittu äiti elementti: elementti, joka voi voida flow sisältöä <label for="age">ikäsi: </label> <select id="age" name="age"> <option>valitse</option> <option>alle 20</option> <option>20 39</option> <option>40 59</option> <option>yli 60</option> </select>
<select> <option> <optgroup> Määrittelee valintalistan, valintaruudun tai radiopainikkeen vaihtoehdot Sallittu sisältö: tekstimuotoista tietoa Sallitut attribuutit: globaalit attribuutit, label, selected, value Sallittu äiti elementti: <select> <optgroup> <datalist> <label for="age">ikäsi: </label> <select id="age" name="age"> <option>valitse</option> <option>alle 20</option> <option>20 39</option> <option>40 59</option> <option>yli 60</option> </select> <select> <option> <optgroup> Ryhmittelee vaihtoehtoja valintalistassa. Sallittu sisältö: tekstimuotoista tietoa Sallitut attribuutit: globaalit attribuutit, disabled, label Sallittu äiti elementti: <select> <form action="kasittelija.php"> <select id="kirja" name="on lukenut" multiple="multiple"> <optgroup label="sofi Oksanen"> <option>puhdistus</option> <option>kun kyyhkyset katosivat</option> </optgroup> <optgroup label="arto Paasilinna"> <option>aatemi ja Eeva</option> <option>jäniksen vuosi</option> <option>kylmät hermot, kuuma veri</option> </optgroup> </select> <form>
<datalist> Liittää tekstityyppiseen <input> syotekstikenttään listattribuuttia käyttäen ennakkoon määritellyn listan arvoja, joita tarjotaan automaattisena täydennyksenä kun kenttään kirjoitetaan sisältöä. Sallittu sisältö: nolla tai enemmän <option> elementtejä Sallitut attribuutit: globaalit attribuutit Sallittu äiti elementti: elementti, joka voi voida phrasing sisältöä <input type="text" list="isotkaupungit" name="kotikaupunki"> <datalist id="isotkaupungit"> <option value="tampere"> <option value="helsinki"> <option value="oulu"> <option value="turku"> <option value="rovaniemi"> </datalist> <keygen> Elementin avulla luodaan salausavainpari, jota käytetään salaamaan tiedot jotka kulkevat palvelimen ja selaimen välillä Sallittu sisältö: tyhjä elementti Sallitut attribuutit: globaalit attribuutit, autofocus, challenge, disabled, form, keytype, name Sallittu äiti elementti: elementti, joka voi voida phrasing sisältöä <form action="kasittelija.php" method="get"> Pankkitilin numero: <input type="text" name="tilinro" /> Salaus: <keygen name="salaus" /> <input type="submit" value="lähetä" /> </form>
<output> Vastaavasti kuin <input> elementtiä käytetään tiedon tuomiseen verkkosivun lomakkeelta käsittelyyn, tulisi <output> elementtiä käyttää ohjelmassa tuotettujen (selaimessa javascriptillä laskettujen tai palvelimelta saatujen) tietojen näyttämiseen. Sallittu sisältö: tyhjä elementti Sallitut attribuutit: globaalit attribuutit, for, form, name Sallittu äiti elementti: elementti, joka voi voida phrasing sisältöä <progress> Piirtää horisontaalisen palkin, jolla voi visualisoida tehtävän etenemistä. Esimerkiksi arvo 20 piirtää puoleen väliin täytetyn palkin, jos maksimiarvoksi on annettu 40 (kuten esimerkissä alla) Sallittu sisältö: phrasing sisältö Sallitut attribuutit: globaalit attribuutit, value, max Sallittu äiti elementti: elementti, joka voi voida phrasing sisältöä <progress value="20" max="40"></progress>
<meter> Piirtää horisontaalisen palkin, jolla voi visualisoida suhteellista määrää. Esimerkiksi arvo 0.5 piirtää puoleen väliin täytetyn palkin. Sallittu sisältö: phrasing sisältö Sallitut attribuutit: globaalit attribuutit, value, min, max, low, high, optimum Sallittu äiti elementti: elementti, joka voi voida phrasing sisältöä Mittari1: <meter value="2013" min="2000" max="2100" ></meter> Mittari2: <meter value="0.75"></meter> Lomakkeen kenttiin syötetyt tiedot lähetetään palvelimelle o tiedot vastaanottaa ja käsittelee palvelimella cgi ohjelma o ohjelma määrätään lomakkeen action attribuutilla cgi ohjelma o rajapinta (Common Gateway Interface) lomakkeen ja palvelimella tiedot vastaanottavan ohjelman välillä o siis WWW palvelimella suoritettava ohjelma, joka saa selaimelta (yleisimmin HTMLlomakkeilta) tietoja o ei sidottu mihinkään tiettyyn ohjelmointikieleen o toteutetaan usein tulkattavilla, ns. skriptikielillä (Perl, Phythonilla, PHP) o mahdollista myös kirjoittaa erilliseen käännettävillä kielillä (C#, Java, C++ tai erityisesti verkkosovellusten laatimiseen räätälöityjen ohjelmointiympäristöjen avulla, kuten ASP.NET tai J2EE o ohjelman suoritus tapahtuu palvelimella, ei selaimessa - palvelimella oltava ko. kielen tulkki (tai kääntäjä) - voivat käyttää palvelimella sijaitsevia tiedostoja tai tietokantoja o lähettää (tyypillisesti) palautesivun selaimelle
<form action="cgi ohjelman url"method="get"> get o selain liittää lomakkeen tiedot verkkosovelluksen osoitteeseen o lähettää pyynnön verkkosovelluksen omaavalle www palvelimelle o lomakkeen tiedot näkyvät verkko osoitteessa? merkin perässä, muuttujat on eroteltu toisistaan & merkillä. käytetään o pienissä lomakkeissa, o tilanteissa, joissa ei ole tarpeen peittää lomakkeen tietoja käyttäjältä (tai muilta koneen lähettyvillä olevilta) o useimmat web hakukoneet käyttävät lomakkeissaan get metodia o mahdollistaa kyselyn tallentamisen ja edelleen lähettämisen toisille asiasta kiinnostuneille tai tietojen lähettämisen lomakkeenkäsittelijälle myös kokonaan ilman verkkolomaketta <form action="cgi ohjelman url"method= post"> post o lähetetään HTTP kutsun mukana omassa kentässään käytetään o suositeltavaa, kun verkkosovellukselle lähetetään suuri määrä tietoa tai o tiedon piilottaminenkäyttäjältä tai tietokoneen ympärillä olevilta silmäpareilta on tarpeen o huomattava kuitenkin, että - myös post metodilla tiedot lähetetään verkkosovellukselle täysin salaamattomina - kolmas osapuoli voi lukea kaikki lomakkeella lähetettävät tiedot (myös salasanat) o arkaluonteisia tietoja lähetettäessä tulisikin varmistua siitä, että asiakassovellus (web selain) keskustelee wwwpalvelimen kanssa esim. SSL salatulla HTTPS protokolla. Esimerkit kurssisivuilla JavaScriptin rooli alkuaikojen (usein ärsyttävien) tehosteiden lisäyksiin käytetyistä, aliarvostetusta kielestä o kehittynyt varsin vakavasti otettavaksi ja voimakkaaksi ohjelmointikieleksi. JavaScriptin avulla voidaan o lisätä www sivuille dynaamisia toimintoja o tarkistaa lomakkeelle syötettyjä tietoja o tulostaa verkkosivulle sisältöä ohjelmallisesti, o muokata verkkosivulla olevaa sisältöä. Alunperin Netscapen kehittämä o Netscape selaimessa 1995 nimellä LivesScript vaihtoi nimeksi JavaScript Sittemmin JavaScriptin menestyksen taustalla on ollut ECMA o otti vastuun kielen standardisoinnista o JavaScript seuraa ECMAScript standardeja, viimeisin (huhtikuu 2013) o vimmeisin JavaScript 1.8.5 (perustuu EcmaScript standardiin ECMA 262).
JavaScript on o kevyt, selaimessa tulkattava ohjelmontikieli o perustuu löyhästi C ohjeilmointikieleen o dynaamisesti tyypitetty kieli (muuttujien tyyppiä ei tarvitse kiinniittää) o oliopohjainen, tai tarkemmin prototyyppipohjainen (oliomalli ja periytyvyys pohjautuvat prototyyppeihin, ei luokkiin) ohjelmointikieli, (tarkemmin MDN: Details of the object model) Toisin kuin cgi ohjelmat, javascript koodi suoritetaan suoraan selaimessa. o sivuun voi tehdä paikallisia muutoksia lataamatta koko sivua uudelleen palvelimelta o "dynaaminen HTML Javascriptiin löytyy palvelinohjelmoinnin mahdollistavia laajennusmoduleta o olioita, joiden kautta voi esimerkiksi käsitellä palvelimella sijaitsevia tietokantoja tai tiedostoja Tulkki ohittaa ylimääräiset tyhjätilamerkit o ohjelmakoodin sisennys normaaliin tapaan suositeltavaa. JavaScript kirjastoissa kuitenkin koodi usein pitkänä rivinä (pitkinä riveinä) sisentämättömässä muodossa o isoissa kirjastionti koodin minimoinnilla merkitystä (tulkkauksen tehostaminen) Työkaluja koodin minimointiin o Google Closure Compiler: https://developers.google.com/closure/compiler/ o GCC online versio: http://closure compiler.appspot.com/home o YUI Compressor: http://yui.github.io/yuicompressor/ o YUI online versio: http://refresh sf.com/yui/ Minimointia ei kuitenkaan tarpeen ole tehdä itse kirjoitetuille koodipaloille o eikä se ylläpidon ja muokkauksen kannalta ole järkevääkään
Upotus sivulle (HTML dokumenttiin) analogisesti CSS sääntöjen kanssa o voidaan kirjoittaa omaksi (*.js) tiedostokseen ja tuoda se sivulle <script>elementin avulla (suositeltavaa) <script type="text/javasript" src="nimi.js" >... javascript koodi </script> tai omana elementtinään johonkin kohtaan HTML dokumenttia <script>... javascript koodi </script> Mihin kohtaan ohjelmaa skripti lisätään? <!DOCTYPE html> <head> <title>ensimmäinen javascript ohjelma</title> </head> <body> <script> document.write("opetellaan Javascriptiä!") </script> </body> </html> o voi sijoittaa sivulle minne tahansa yleensäkin elementin o oheisen kaltaisessa tilanteessa tietysti kohdan määrää se, mihin skriptin halutaan tuottavan sisältöä Normaalimpi käyttötilanne o skriptit kirjoitetaan funktioiksi ulkoiseen (*.js) tiedostoon o kirjoitetaan funktioiksi, vaikka kirjoitettaisiin koodina elementin sisään, koodi kirjoitetaan funktioiksi o funktioita kutsutaan käyttäen HTML:n tapahtumankäsittelijöiden avulla o aiemmin käytäntönä oli sijoittaa skriptit dokumentin otsikko osaan (eivät varsinaista sivun sisältöä, vaan eräänlaista sivun lisäinformaatiota) Nykyisin: sijoita aina dokumentin loppuun, jos se on mahdollista o selain noutaa (erilliset tiedostot), tulkitsee ja suorittaa skriptit siinä järjestyksessä kun ne HTMLdokumentissa tulevat vastaan o blocking effect: sinä aikana kun skriptitiedostoa tulkataan, sivulle ei tuoteta mitään <script> elementin jäljessä määriteltyä sivun sisältöä
Kuten C:ssä, C++:ssa, Javassa o lauseet päätetään normaalisti puolipisteeseen o JavaScriptissä puolipisteen voi kuitenkin jättää pois, silloin kun lause on kirjoitettu omalle rivilleen <script language="javascript" type="text/javascript"> var alku = 1; var loppu = 2; var muuttuja1 = 10 var muuttuja2 = 20 </script> JavaSript on case sensitiivinen kieli, o Esimerkiksi luku, Luku ja LUKU ovat kaikki eri tunnuksia Nimeämiskäytännöt o varsinaisia pakottavia sääntöjä ei ole, vakiintuneita käytäntöjä kyllä o "camelcase" käytäntö under_score käytännön sijasta o muuttujien nimet pienellä alkukirjaimella, oliotyyppien nimet isolla o nimeämiskäytännöistä tärkeintä kuitenkin on - käyttää ohjelmissa hyvin kuvaavia nimiä ja - säilyttää omaksumansa nimeämiskäytäntö samana o ks. Jeff Wayn kokoama lista: 9 Confusing Naming Conventions for Beginners var tyontekija = new Object(); var auto = new Array( Lada", Skoda", Nissan"); var day = new Date(2013,04,25);
document.write("seuraavat rivit eivät näy sivulla") // yhden rivin kommentti /* javascript tulkki ohittaa kaikki merkit oli se sitten mitä tahansa kunnes löydetään kommentin lopettavat merkit */ document.write("tämä taas näkyy") <script language="javascript" type="text/javascript"> <! document.write("opetellaan Javascriptiä!") > </script> Kielessä on 56 varattua sanaa:
JavaScript on dynaamisesti tyypitetty kieli o muuttujan tyyppi määräytyy sen arvon perusteella o voi vaihtua ohjelman suorituksen aikana JavaScriptin muuttujat ovat olioita olioita voi luoda itse kielestä löytyy joukko valmiiksi määriteltyjä ydinolioita (core objects): o Array, Boolean, Date, Function, Math, Number, RegExp, ja String Muuttuja on esiteltävä ennenkuin sitä voi käyttää o nimessä saa käyttää kirjaimia (A Z, a z), numeroita (0 9), (_). o ei saa alkaa numerolla, esimerkiksi - 99tunnus ei ole sallittu - tunnus _99tunnus on sallittu Muuttujalle voidaan antaa arvo esittelyn yhteydessä, mutta se ei ole välttämätöntä <script type="text/javascript"> var luku = 12; //Number var nimi = "Outi Ohjelmoija"; var nimi2; </script> Viittausalue: o paikallisia omassa funktiossaan o funktioiden ulkopuolella esitellyt globaaleja muuttujia o muuttujaa voi käyttää ennen sen esittelyä, variable hoisting (sitä tulee välttää)
if (ehtolauseke) lause [lelse lause] var ika;... if (ika<10) { document.write("lapsi"); //ehkä muitakin lauseita } else if (ika <30) { document.write("nuori"); //ehkä muitakin lauseita } else if (ika <65) { document.write("aikuinen"); //ehkä muitakin lauseita } else document.write("seniori");
switch (lauseke) { case arvo1: lause; [lause;]* break; case arvo2: lause; [lause;]* break;... case arvon: lause; [lause;]* break; default: statement(s) } switch (luku) { case 10: alert("luku on 10"); break; case 20: alert("luku on 20"); break; default: alert("ei ollut luku 10 eikä 20, ei.") } while (ehtolauseke) lause [;lause]* var i=10; while (i>0) { document.write(i+"\n"); i ; }
for (aloituslause; lopetuslause; silmukkamuutujan muutos){ lause [;lause]* } for (var i=0; i<10; i++) document.write(taulu[i,j]) } break o suoritus määrätään siirtymään ulos lauseesta o break lauseen avulla voidaan tulla ulos mistä tahansa lauselohkosta continue l o käytetään silmukan sisällä määräämään, että o suoritus siirtyy välittömästi testaamaan silmukkaehdon voimassaolemista o mikäli se vielä täyttyy, silmukan lauseiden suoritusta jatketaan seuraavan kierroksen alusta.