Documente Academic
Documente Profesional
Documente Cultură
JavaScript
Tehnologii Web
Obiective
Scopul acestui capitolnueste acela deafaceodescriere
complet aJavaScriptianoiunilor deprogramare
avansat pe carelimbajul lesuport
Exist numeroase documente icripublicate inclusiv n
limba romn careconininformaiicompleten
domeniu
Prezentmncontinuare doar otrecere nrevist a
limbajului.
Sumar
JavaScript fundamente
JavaScriptiHTML gestiunea simpl aevenimentelor
Exemple JavaScript
Maimulte despre JavaScript
JavaScript
Fundamentele Limbajului
Ce este JavaScript?
JavaScriptafost creat pentru aaduga interactivitate
paginilor HTML
JavaScripteste unlimbaj descripting
Unlimbaj descriptingeste unlimbaj deprogramare
lightweight
Deobicei,codul JavaScripteste nglobat directn
paginile HTML
JavaScripteste unlimbaj interpretat (seexecut fr
compilare)
JavaScriptpoate fi folosit fr acumpra vreo licent
http://www.w3schools.com/JS/js_intro.asp
Despre JavaScript
JavaScriptnueste Java,nici macar nrudit cuJava
Numele originalalJavaScriptafost LiveScript
Numele afost modificat cnd Javaadevenit popular
Astazi,candMicrosoftnumaiindrgeteJava, propriulnumeacordatdialectului
JavaScript esteActiveScript
Folosirea JavaScriptntrunbrowser
Observaii:
Atributul type permitefolosirea altorlimbaje descripting (chiar dac JavaScript este
limbajul implicit)
document.write("<h1>HelloWorld!</h1>");este echivalent cuascrie <h1>Hello
World!</h1>nacelai locndocumentul HTML
document.write este instruciunea pentru scriere
Punct ivirgul delafinalul instruciunii JavaScripteste opional
Sfritullinieimarcheaz sfritulinstruciunii,dac liniapoatefi interpretat cao
instruciune complet
Sepoatefolosipunctivirgul pentruseparareamaimultorinstruciuni ceapar pe
aceeailinie
Esteindicattotuifolosireanpermanen acaracteruluipunctivirgul
Comentarii
ComentariilesuntsimilarecuceledinCsauJava:
Tipuri dedateprimitive
JavaScriptaretrei tipuri
primitive:number,string i
boolean
Oricealtcevaesteunobiect
Numerelesuntntotdeauna
stocatecavaloridetipfloat
Valorile boolean sunt fietrue fie
false
FunciaNumber
Number(value)
Convertete valoarea ntrun numr.
Dacapareoproblematuncireturneaz NaN.
FunciaparseInt
parseInt(valoare,10)
Convertetevaloareantrunnumr.
Seopretelaprimulcaractercarenuestecifr.
Sepoatespecificaibazanumrului
parseInt("08")==0
parseInt("08",10)==8
Dacnusespecificbaza, atuncinumerelecarencepcu0 sunt
considerateafinbaza8iarnumerelecarencepcu0xsuntconsideratea
finbaza16
Math
ObiectulMathestemodelatpebazaclaseiJava Math
Acestaconine
abs
floor
log
max
pow
random
round
sin
sqrt
modulul
rotunjire njos
logaritm
maxim
ridicarelaputere
numraleator
rotunjirectrecelmaiapropiatntreg
sinus
radical
Stringuri
Secveneformatedin0saumaimulte
caracterereprezentatepe16bii
Nuexistuntipseparatpentru
caractere
Caracterelesuntreprezentatecastring
uri delungime1
Stringurile nupotfimodificate
Stringurisimilarereturneaztrue la
verificareprinoperatoruldeegalitate (
== )
Stringurilepotfidelimitateprin
apostroafesaughilimele
Stringurile potconine \n (newline),
\" (doublequote),etc.
MetodeleString
charAt
concat
indexOf
lastIndexOf
match
replace
search
slice
split
substring
toLowerCase
toUpperCase
Stringlength
string.length
Proprietatea length determin numrul
caracterelorpe16biialestringului
FunciaString
String(valoare)
Convertetevaloareantrunstring.
FunciaBoolean
Boolean(valoare)
returneaz true dacvaloare esteadevrat
returneaz false dacvaloareaestefals
Variabile
Variabilele potfi declarate folosind var:
var pi=3.1416,x,y,name="Dr.Dave";
Numele devariabile trebuie s nceap cuoliter sau cuunderscore
Numele devariabile sunt casesensitive
Variabilele nu autip(ele potine valori deorice tip)
Operatori (1)
Foarte asemntor cusintaxa dinJava
Operatoriaritmetici(toatenumerelesuntnvirgulmobil):
+ */%++
Operatori decomparaie:
<<===!=>=>
Operatori logici:
&&||!
Operatori lanivel debii:
&|^~<<>>>>>
Operatori deasignare:
+==*=/=%=<<=>>=>>>=&=^=|=
Operatori (2)
Operator laniveldestringuri:
+ concatenare
Operatorul decondiie:
condition?value_if_true :value_if_false
Teste deegalitate:
== i!= ncearc convertirea operatorilor laacelai
tipinaintea efectuarii testului
===verific egalitatea exact (atttip,ctivaloare)
Instructiuni (1)
Atribuirea:greeting="Hello,"+name;
Instruciunea compus:
{statement;...;statement}
Instruciunea If:
if(condition)statement;
if(condition)statement;elsestatement;
Instruciuni deiterare:
while(condition)statement;
dostatementwhile(condition);
for(initialization;condition;increment)
statement;
Instructiuni (2)
Instruciunea switch:
switch(expression){
caselabel:statement;
break;
caselabel:statement;
break;
...
default:statement;
}
Obiecte
nJavaclaseledescriuobiecteitoateobiecteleaceleiaiclase auexact
aceleaicmpuri imetode
Obiectele JavaScriptsunt mai flexibile dectobiectele Java
Treimodurideacreaunobiect
Puteifolosiunobjectliteral:
var course={number:"CIT597",teacher:"Dr.Dave"}
Puteiscrieifolosiunconstructor:
functionCourse(n,t) {//functionsshouldbedefinedin<head>
this.number =n;//keyword"this"isrequired,notoptional
this.teacher =t;
}
var course=newCourse("CIT597","Dr.Dave");
Vectori
Vectorii nJavaScriptsunt arrayliterals,scriicuparanteze
drepte ivirgule
Exemplu:color=["red","yellow","green","blue"];
Arrayurile sunt iniializate delapoziia 0:color[0]este "red
Dac puneidou virgulesuccesive,arrayulvaavea un
elementempty laacea poziie
Exemplu:color=["red",,,"green","blue"];
colorare5elemente
Exempul:color=["red",,,"green","blue,]; aretot5elemente
Arrayuri iobiecte
Arrayurile sunt obiecte
car={myCar:"Saturn",7:"Mazda"}
car[7]esteechivalent cu car.7
car.myCar esteacelasi cucar["myCar"]
Dac cunoateinumeleuneiproprieti
puteifolosinotaiacupunct:car.myCar
Dacanucunoastetinumeleproprietiidar l
aveintrovariabil (saulputeicalcula),
puteifolosi notaia detiparray:
car["my"+"Car"]
Funciiaplicabile arrayurilor
Dac myArray este unarray:
myArray.sort()sorteaz arrayul alfabetic
myArray.sort(function(a,b){returna b;})sorteaz
numeric
myArray.reverse()inverseaz elementele arrayului
myArray.push() adaug orice numrdeelemente la
finalularrayuluiicretedimensiuneaacestuia
myArray.pop()nltur intoarceultimulelemental
arrayului idecrementeaz dimensiunea acestuia
myArray.toString()ntoarceunstringconinnd
valoarile elementelor arrayului,separateprin virgul
Instruciunea forin
Similar instruciuniiiterativedinJavafor(type var:collection)
Puteiiteraprinproprietileunuiobiectfolosind
for(variable inobject)statement;
Exemplu:for(varprop incourse){
document.write(prop +":"+course[prop]);
}
Posibiloutput:teacher:Dr.Dave
number:CIT597
Proprietilesuntaccesatentroordinenedefinit
Dacaadugaisautergeiproprietiobiectuluidinloop ,estenedefinitdac
instruciuneaiterativ vatraversaiproprietilenoudefinitesaunu
Arrayurile suntobiecte;aplicat unuiarray,forinvavizita proprietatile 0,1,2,
Observaic course["teacher"]esteechivalentcucourse.teacher
Trebuies folosiiparantezedreptedac numeleproprietiiestentrovariabil
Instruciunea with
Deexemplu,urmtoarelesuntechivalente:
with (document.myForm){
result.value =compute(myInput.value);
}
document.myForm.result.value =
compute(document.myForm.myInput.value);
JavaScript arenumecalificate;deexemplu,document.write("Hello
World");
JavaScript areevenimenteigestiuneaevenimentelor(eventhandlers)
GestiuneaexcepiilornJavaScript estesimilar cuceadinJava
TotuiJavaScript areuneleconstruciidiferitedeceledinJava:
Numeledevariabilenuautip: tipuluneivariabiledepindede valoarea
curent pecarerespectivavariabil odeine
Obiecteleiarrayurile suntdefinitentromanier diferit deceadin
Java
JavaScript areinstruciuneawith ionou form ainstruciuniifor
Funcii
FunciilesuntfoartedesfolositenJS.Ofuncie esteunsetdeinstruciunidinlimbajul
JavaScriptcareefectueazosarcin.
Funciilepotfiapelatedeorictdemulteoriestenecesarntimpulrulriiscriptului.Elesunt
utilizatepentruaevitaredundaa codului!!!
Ofuncieecompusdincuvntulcheiefunction,urmatdenumelefunciei.Numelefunciei
esteurmatntotdeaunadeunsetdeparanteze(),dupcareseafloacoladdedeschidere.
Instruciunilecarecompunfunciasuntplasatepernduridiferiteiarlasfritfunciaeste
finalizatcuoacoladdenchidere. Sintaxa pentru definirea unei funciieste:
functionname(arg1,,argN){statements}
Funciapoatesaibparametrii arg1,,argN
Funcia poate conine instruciuni detipul returnvalue;
Oricevariabil declarat ninterioruluneifunciiestelocal respectivei funcii
Fiecreifunciitrebuiesisealoceunnume,iareapoatefiinvocatsauapelatprin
intermediulacestuinumedinoriceparteascriptului.Sintaxa pentru apelarea unei funcii
este
name(arg1,,argN)
Expresii regulate
Scopuluneiexpresiiregulateeste
aceladeadefinipatternuri
folositepentruafacecomparaii
cuunstring
Sintaxapentrucreareaunei
expresiiregulateeste:
//Shortcut syntax
varre=/pattern/[g|i|gi];
//Formalconstructor
varre=new RegExp(["pattern",
["g"|"i"|"gi"]]);
string.match(regexp)areroluldea
cutanString apariiialeregexp
ntoarcenull dac nuestegsit
nimic
Dac regexp aresetatflagul g
(globalsearch),match ntoarceun
array cutoatesubstringurile cese
potrivescexpresiei
Dacag nuestesetat,match
ntoarceunarray alcruielementde
pepoziia0reprezint textulcese
potriveteexpresiei
Atenionri
JavaScript esteunlimbajmare,complex
Amprezentatdoarelementedelasuprafaaacestuia
EuordepornitcuJavaScript,dardac aveinevoies lfolosiintro
manier maicomplex trebuies v faceitimppentrualnvacu
adevrat
Scriereaitestareaprogramelornecesit unpicdeefortdinparteaechipei
dedezvoltare
JavaScript nuestetotalindependentdeplatform
Trebuiesav ateptaicapediversebrowsere coduls secomporten
moddiferit
Scriereaitestareaprogramelornecesit unpicdeefortdinparteaechipei
dedezvoltare
JavaScriptsi HTML
Gestiunea evenimentelor
JavaScriptiDOM
Putetifacemultelucrurintelegndunpicconceptul deDOM
PutetifolosiDOMpentruaaccesaelementelepaginiiweb
getElementById()
getElementByTagName()
Puteicaptaevenimentefr safiidelocfamiliarizai cuconceptul DOM
AveinevoiedeDOMpentruafaceeventualemodificri n pagina web
http://www.w3schools.com/htmldom/default.asp
Evenimente
Unele(darnutoate)elemente alepaginiiwebrspundla
interactivitateadinparteautilizatorului(keystrokes,mouse clicks)
princreareadeevenimente
Diversetipurideelementeproducevenimentediferite
Puteifolosihandlere asociateunorelementedeformulareHTML
Dac evenimentulnuestegenerathandlerul nufacenimic
Unhandler artrebuisafiefoartereduscadimensiune
Unhandlerdeevenimente simplu
<formmethod="post"action="">
<inputtype="button"
name="myButton"
value="Clickme"
onclick="alert('You clickedthe
button!');">
</form>
Butonulesteincorporatntrunformular
method specificacumsunttrimisedatele
formularului;
action specificaundesunteletrimise
Tagulesteinput,avndatributul
type="button
Atributulvalue vaapreapebuton
onclick estenumeleevenimentuluicese
vreaafigestionat
Valoareaelementuluionclick estecodul
JavaScript carevafiexecutat
alert areroluldeadeclanaofereastr de
popup de tipalert cuunmesajfurnizatca
argument
Evenimente obinuite
Majoritatea elementelor HTMLproduc urmtoarele evenimente:
onClick elementul respectiv este clicked
onDblClick peelementulrespectivseexecut dubluclickntro
succesiune rapid
onMouseDown butonul demouseeste apsatcnd cursorul era
deasupra elementului
onMouseOver cursoul mouseului este mutat deasupra elementului
onMouseOut cursorul mouseului este scos nafara ariei elementului
onMouseUp butonul mouseului este eliberat cnd cursorul eranc
deasupra elementului
onMouseMovemouseul este mutat
Exemplu:rollover
Urmatorul codva facetextul Hellored atunci cand cursorul
mouseului trece deasupra lui si blue atunci cand cursorul
mouseului iese dinsuprafata elementului
<h1onMouseOver="style.color='red';"
onMouseOut="style.color='blue';">Hello
</h1>
Evenimentesigestionarede
evenimente(1)
Evenimentesigestionarede
evenimente(2)
Evenimentesigestionarede
evenimente(3)
Evenimentesigestionarede
evenimente(4)
Evenimentesigestionarede
evenimente(5)
Evenimentesigestionarede
evenimente(6)
Exemple
Obinerea datei
<scripttype="text/javascript">
var d=newDate()
document.write(d.getDate()+"/")
document.write((d.getMonth()+1)+"/")
document.write(d.getFullYear())
</script>
7/11/2012
Formatarea datei
<scripttype="text/javascript">
var d=newDate()
var weekday=newArray("Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday")
var monthname=newArray("Jan","Feb","Mar","Apr","May","Jun","Jul",
"Aug","Sep","Oct","Nov","Dec")
document.write(weekday[d.getDay()]+",")
document.write(monthname[d.getMonth()]+""+d.getDate()+",")
document.write(d.getFullYear())
</script>
Tuesday,Oct16,2012
Afiaremesaj laclick
<html>
<head>
<scripttype="text/javascript">
functiongetValue(){
var x=document.getElementById("myHeader");
alert(x.innerHTML);
}
</script>
</head>
<body>
<h1id="myHeader"onclick="getValue()">Thisismyheader</h1>
<p>Clickontheheadertoalertitsvalue</p>
</body>
</html>
Lucrulcutextarea
Sedoretecanmomentulncareseapas(onclick)ncsuadetextarea,textuliniialsdispar
Spresupunemcunutilizatordoretescumpereomainaiaredealesdintre3culori.De
aceeatrebuiesaverificmdacutilizatorulchiaraselectatcevadinmeniuldeculoriinua
sritpurisimplupesteacestpas.
Ceestethis
Cuvntul cheieJavaScript this ipermitescriptuluis
pasezeovaloareuneifunciipebazacontextuluin
careesteutilizat.nexemplulanterior,this este
folositninteriorulunuitag form,decithis esteun
obiectdetipformular.
nexempleleulterioare,lveivedeapethis utilizat
naltecontexteivatrebuisputeisiidentificai
sensulpebazacontextuluincareestepasatunei
funcii.
Butoaneleradiopermitutilizatoruluisselectezeoopiune(inumaiunasingur)dintrun
grupdeposibiliti.
Spresupunemcunutilizatortrebuiesaleagntreunautomobilcu2uiiunulcu4ui.
nfiecarecaz,acestapoatealegeosinguropiuneitrebuieneapratsaleagoopiune.
Corelarentrecmpuri
nformularealeseveiobserva
deseoricoopiunealeasde
utilizatorvadictavaloareaaltor
cmpuridinformular.Deexemplu,
spresupunemcopiuneade
maindecapotabilestevalabil
numaipentrumodeleledemaini
cu2ui.Exist2opiuni:
Puteiverificaintrareailansao
avertizarenmomentulncare
utilizatorulselecteazoopiune
contradictoriecuceledeja
introduse
Undesignmaisofisticatimplic
nsselectareaopiunii
corespunztoarenlocul
utilizatorului.Astfeldacun
utilizatoralegeopiunea
decapotabil,scriptulselecteaz
automatbutonulradio
corespunztoruneimainicu2ui.
Corelarentrecmpuri
Trebuiesvasigurai,pentrunceput,cutilizatorulaalesunanumitnumrdeui.Prima
parteacoduluiesteidenticcuceaprezentatnseciuneaanterioar;vomexplicanumai
codulinedit.
if(passForm.DoorCt[doorOption].value==fourDoor &&passForm.sunroof.checked){
alert(The sunroof is only available on the two door model) return false}returntrue
Poriuneadecodestedestuldeclar.DacvaloareabutonuluiradioestefourDoor ieste
selectatcasetadevalidarecorespunztoaremainiidecapotabile,vaapreaunmesajde
eroare.ncazcontrartotulestenregul.
Parteaurmtoareascriptului introducevalorilencmpurinloculutilizatorului.
function doorSet(sunroofField){ cadeobicei,incepeti prin adefini funcia
if(sunroofField.checked){for(i=0;i<document.formular1.DoorCt.length;i++){ n
continuare,dacesteselectatopiuneadecapotabil,ncepeiobuclprincaretreceiprin
toatecmpurileDoorCt.
if(document.formular1.DoorCt[i].value==twoDoor){ cutaicmpulcorespunztor
opiuniicudouui
document.formular1.DoorCt[i].checked=true odatcelati identificat,selectail
atribuinduivaloareaadevrat.
<inputtype=checkbox name=sunroof value=Yes onclick=doorSet(this)> n
seciuneabodyapaginiiHTMLtrebuieintrodusoporiunemicdecodlacmpulcaseteide
validarepentrudecapotabil.Rutinadetratareaevenimentuluionclick apelez funcia
doorSet,creiaipaseazvaloareathis.Funciaestedeclanatdebifareacaseteide
validare.
Validareaadreselordeemail
AdreseledeInternetpot
puneproblemelatastare,
maialesutilizatorilor
nceptori.Puteisiajutai
naceastproblem
parcurgndadresadeemail
pecareautastatoi
verificnduivaliditatea.De
exemplu,puteiverificadac
semnul@este prezentat o
singurdatidacnuau
fostintrodusecaractere
nepermise(ex/).
Evident,este imposibil s
interceptmgreelilede
scriere,aacdac
utilizatoruladoritsscrie
popescu@yahoo.com ide
faptascris
popesc@yahoo.com greeala
nuvaputeaidentificat.
Validareaadreselordeemail
Validareaadreselordeemail
JavaScriptescapesequences
Ce NUputeti face
Pentruproteciavizitatorilorlapaginilevoastre,folosind JavaScript
nuputei:
Executa alte programe
S v conectailaaltecomputere,exceptnddownloadul altor pagini
HTMLsau trimiterea deemail
S determinaicealtesiteuriavizitatutilizatorul
Citiisau scrie fiiere
Vizitaisiteurileurmtoarepentru
informaiisuplimentare
www.javascriptgate.com/
www.gatescript.com/
www.biblioscript.com/
www.w3schools.com/
www.siteexperts.com/
developer.irt.org/script/script.htm
www.wsabsract.com/cutpastejava.shtml