Documente Academic
Documente Profesional
Documente Cultură
HTML INTRODUCERE
Ce este World Wide Web?
World Wide Web este un network de resource informative . El se bazeaza pe trei mecanisme pentru a face aceste resurse
utile pentru o audieta larga.
1. O forma uniforma de notatii pentru a pozitiona resursele pe Web.
2. Protocoale pentru a accesa resursele pe Web (ex. HTTP).
3. Hypertext, este o modalitate usoara de navigare (HTML).
Introducere in URL-uri
Fiecare resursa care se gaseste pe Web document HTML, imagine, video clip si program are o adresa care se numeste
URL si anume Universal Resourse Identifier sau pe scurt URL.
Aceasta are trei parti importante:
1. O schema de numire care ne permite sa accesam usor aceea resursa
2. Numele masini pe care se gaseste resursa
3. Numele resursei respective dindu-se un path pina la resursa respectiva
Sa consideram urmatoarea resursa URL necesara pentru a descrie urmatoare specificatie HTML:
http://www.ecadro.com/cursuri/javahtml/
Aceasta linie trebuie citita in felul urmator : Acesta este un document care se gaseste pe internet via HTTP si care se
gaseste mai exact pe masina www.ecadro.com in urmatorul director : /cursuri/javahtml/. Celalate scheme care se pot gasi pe un
document HTML include adrese de tipul mailto pentru e-mail si ftp pentru FTP.
Sa consideram mai jos un cod de URL care contine si o adresa de casuta postala:
aici avem un paragraf care contine text
Pentru comentarii referitoare la cele referite anterior va rugam sa trimiteti un e-mail
la urmatoarea adresa :
<A href=mailto:epopa@ecadrocom.com> Emilian Popa </A>
Identificarea fragmentului din text
Citeva URL se refera la identificarea unei resurse . Acest tip de URL se termina cu caracterul #urmat de o ancora care
se numeste identificator de fragment. De exemplu sa consideram un URL care duce la sectiunea section_2 :
http://www.ecadro.com/html/top.html#section_2
URL Relative
Confidential
Page 1
3/25/2016
Un URL relativ nu contine nici o informatiei . Si in path se refera la resursa care se gaseste pe aceeasi masina. Sa
consideram un exemplu:
Astfel daca vom avea urmatoarea adresa URL http://www.ecadro.com/support/intro.html, atunci un URL relativ la
aceasta adresa va fi: <A href=supplieres.html>Suppliers</A> care de fapt se refera la urmatoarea adresa URL :
http://www.ecadro.com/support/suppliers.html
Un alt exemplu il consitituie o adresa de genul:
<IMG src=../icons/logo.gif alt=logo> care de fapt se refera la urmatoarea adresa de URL:
http://www.ecadro.com/icons/logo.gif
In limbajul HTML un URL este folosit pentru:
Protocol
Accesabilitate
http://
Documente HTML
Documente HTML secrete (cu
grad de secURLtate ridicat)
Documente HTML pe hard
discul computerului tau
Site FTP si fisiere
Meniu Gopher si documente
GrupURL de discutie
GrupURL de discutie
Mesaje e-mail
Sesiune telnet la distanta
https://
file://
fpt://
gopher://
news://
news:
mailto:
telnet:
Ce este HTML ?
Pentru a publica o informatiei pe intreg globul, a fost nevoie de o limba universala, care sa fie folosita pentru aceast
task si pe care toate computerele de pe glob sa o inteleaga. Astfel pentru Wold Wide Web a fost aleasa drept limba de
comunicare limbajul HTML care este prescurtarea de la : Hyper Text Markup Language.
Acest limbaj le permite autorilor sa :
Confidential
Page 2
3/25/2016
Sa proiecteze forme care sa fie folosite pentru a face tranzatii cu computere de pe retea, si pentru a cauta informatii,
pentru a face rezervarii si pentru a cumpara produse.
o mai buna distinctie intre structura documentului si prezentarea, folosindu-se mai mult pagini de stil in loc sa se
foloseasca elemente de prezentare HTML si atribute.
Forme mai bune, incluzind si chei de acesabilitate si denumiri active
Abilitatea de a afisa o descriere a obiectului selectat
Posibilitatea de a crea harta unei imagini si de a pune linkuri pe portiuni de imagine
A fost extinsa comanda table
Posibilitatea a folosi o descriere lunga pentru tabele, imagini si framuri.
Confidential
Page 3
3/25/2016
Cred ca acest capitol va captat atentia si a aparut curiozitatea pentru acest nou domeniu care va permite sa lucrati intr-o
o noua lume a informatici si anume WWW.
Formatul Fisierului
Tipul Fisierului
Extensia
audio
audio
audio
audio
audio
audio
grafica
grafica
grafica
grafica
grafica
animatie 3D
video
video
video
prezentare multimedia
text
text formatat
text formatat
grafica
.au
.wav
.aiff,.aifc
.mpg,.mpeg
.voc
.ra,.ram
.giff
.jpeg,.jpeg
.tif,.tiff
.bmp
.pict
.wrl
.mpg,.mpeg
.mov,.moov,.qt
.avi
.dcr
.txt,.text
.ps
.pdf
.fli,.flc
Confidential
Page 4
3/25/2016
username este numele utilizatorului serviciului internet, de exemplu username-ul meu (acountul meu) este epopa
host-sub-domeniu este o parte a serverului HTML (optionala)
server este serverul HTML (gazda)
Tipul Serverului
(domeniului)
Tipul Organizatiei
.com
.edu
.org
.net
.gov
.mil
.ca
.ro
Comercial
Educational
Organizatie/Asociatie
Retea de computere
Server al Guvernului
Server Militar
Server Canadian
Server Romanesc
Pentru a intelege mai bine ce este un server si ce sunt subdomeniile putem face analogia cu o petrecere in care gazda
invita foarte multi invitati. Cei care se ocupa de invitati sunt cei care servers si ei trebuie sa asculte ce le spune gazca
care controleaza petrecerea. La fel si serverul (gazda) are in control mai multe sub-domenii care contin informatii si pe
care le controleaza. Astfel pot fi servere care au numai fisierele HTML, pot fi servere care au serviciu ftp si care dau
fisierele mai largi si pot fi servere care duc la bun sfirsit serviciu de e-mail sau grupuri de discutie.
Un server trebuie inteles ca fiind un computer pe care se gasesc software care permit trimiterea de pagini HTML si alte
formate pe care le-am aratat anterior. Acest server trebuie sa aiba o conecxiune rapida la internet care sa permita
trimiterea si primirea a mai multor date in acelasi timp. Acest flux de date este masurat in bps adica bites pe secunde si
se traduce ca fiind numarul de bites pe care acel server il poate trimite intr-o secunda. Vom prezenta in continuare
tipurile de conexiuni la internet posibile si rata de transfer a accestora:
Viteza conexiuni
Technologia folosita
14.4/28.8 Kbps/56Kbps
56Kbps
64 Kbps
128 Kbps
<1.5 Mbps
1.5 Mbps
45 Mbps
Modemuri
Linie de 56Kbps
Canal ISDN Single-B
Rata ISDN de baza
Rata primara ISDN
Linie dedicata T-1
Linie dedicata T-3
Introducere in HTML
HTML este un sistem care se foloseste pentru a defini o harta a unui document. Aceasta harta cuprinde structura
documentului, prezentarea si alte informatii care vor apare odata cu creerea documentului de catre browserul care citeste
acest document.
Vom prezenta mai jos un exemplu de document HTML :
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 5
3/25/2016
<HTML>
<HEAD>
<TITLE>Acesta este primul document HTML</TITLE>
</HEAD>
<BODY>
<P> Bine v-am gasit pe Web !
</BODY>
</HTML>
Se observa ca un document este impartit in mai multe sectiuni o astfel de sectiune este <HEAD></HEAD> care este
partea de sus a domunetului si <BODY></BODY> care este corpul documentului . In partea de sus a documentului se observa ca
apare titlu documentului iar in corpul documentului apare continutul documentului .
Seminar:
1.
2.
3.
4.
5.
Linie orizontala
Pentru a introduce o linie orizontala intr-un fisier HTML se foloseste tag-ul <HR> Acest tag poate avea la rindul lui
urmatoarele atribute:
align=left | right |center care permite aliniarea linie la stinga ecranului, la dreapta sau in centru (implicit este
align=center);
noshade linia nu va avea umbra;
size = pixels ne da marimea latimi liniei in pixeli ;
width = procent este lungimea liniei referitoare la ecran in procente; 100% este implicit;
color = nume culoare seteaza culoarea liniei; exemplu color=blue;
<html>
<head>
<title>Folosirea liniei intr-un fisier HTML</title>
</head>
<body>
Linie avind lungimea egala cu latimea ecranului.
<HR>
Linie avind lungimea egala cu 50% din latimea ecranului.
<HR width=50%>
Linie avind lungimea egala cu 50% din latimea ecranului aliniata la stinga.
<HR align=left width=50%>
Linie avind lungimea egala cu 50% din latimea ecranului aliniata central.
<HR align=center width=50%>
Linie avind lungimea egala cu 50% din latimea ecranului aliniata la dreapta.
<HR align=right width=50%>
Linie cu grosime de 10 pixeli fara umbra.
<HR size=10 noshade>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 6
3/25/2016
Paragraf
Un paragraf in limbajul HTML se introduce folosind perechea de taguri <p> si </p> . El se introduce intotdeauna intre
perechea de taguri <body> si </body>.
Vom considera in continuare un exemplu de paragraf:
<html>
<head>
<title>Primul nostru pargraf</title>
</head>
<body>
<p>
Aici vom introduce textul pentru paragraful nostru. Nu conteaza cit de mare este, cite spatii
au fost folosite intre cuvinte si cind am decis sa apas tasta return. El va creea un alt paragraf numai
atunci cind vom folosi alte doua combinatii de taste p si /p..
</p>
<p>
Aici am introdus un alt paragraf .
</p>
</body>
</html>
doua
S-a observat in cazul anterior ca browser-ul nu tine cont de tasta <Return> atunci cind a fost apasata intre cele
tag-uri <p> si </p>.
Vom considera in continuare un exemplu pentru a intelege mai bine aceasta problema:
<html>
<head>
<title>Folosirea paragrafului</title>
</head>
<body>
<p>
Emilian Popa
Calea Bucuresti
Craiova
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 7
3/25/2016
Romania
</p>
</body>
</html>
Daca vom bate acest text intr-un editor si vom folosi IE sau Netscape pentru a observa rezultatele vom obtine:
Emilian Popa Calea Bucuresti Craiova Romania
Se observa ca in acest caz browser-ul nu a tinut cont de modul cum am asezat noi text-ul intre cele doua taguri
<p> si </p>. El a pus cuvintele in ordine fara a tine cont de linii si anume nu a tinut cont de spatiile intre cuvinte si de
tasta Return. Pentru a inlatura aceasta problema in limbajul HTML a fost introdusa comanda <HR> care are drept scop
trecerea la linia urmatoare in cadru unui document. In acet caz codul sursa HTML va arata astfel:
<html>
<head>
<title>Folosirea paragrafului</title>
</head>
<body>
<p>
Emilian Popa <BR>
Calea Bucuresti <BR>
Craiova <BR>
Romania <BR>
</p>
</body>
</html>
Seminar
1. Creati un fisier p1.html folosind notepad.exe
2. Introduceti codul din primul exemplu al acestui paragraf
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul HTML
5. Editati fisierul folosind notepad.exe si faceti modificarile din exemplu de mai sus
6. Salvati fisierul
7. Folositi IE sau Netscape pentru a vizualiza fisierul HTML.
- acest tag va alignia toate obiectele care sunt intre cele doua tag-uri la stinga pagini
- acest tag va alignia toate obiectele care sunt cuprinse intre cele doua tag-uri la
dreapta pagini.
- acest tag va alignia toate obiectele cuprinse intre cele doua tag-uriin centru pagini
Confidential
Page 8
3/25/2016
Caractere de referinta
Caracterele de referinta sunt nume simbolice si numerice pentru anumite caractere care pot fi incluse in codul HTML.
Aceaste caractere sunt recunoscute dupa faptul ca incep cu carcaterul (&) si se termina folosind caracterul (;).
<html>
<head>
Folosirea de caractere speciale
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 9
3/25/2016
</head>
<body>
<p>
< - caracterul mai mic<br>
> - caracterul mai mare<br>
" - caracterul "<br>
å - caracterul 229<br>
È - caracterul 200<br>
	 - caracterul tab ASCII<br>
- caracterul spatiu<br>
© - carcaterul copyright<br>
® - caracterul marca registrata
</p>
</body>
</html>
Seminar
1. Creati un fisier car.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul
Linia de comentarii
Pentru a introduce o linie de comentarii intr-un fisier HTML se foloseste urmatorul format:
<!-- Acesta este comentariu si va fi ascus de browser-ul dumneavoastra -->
Vom prezenta in continuare un exemplu de fisier HTML care foloseste linie de comentariu:
<html>
<head>
<title>Folosirea liniei de comentariu</title>
</head>
<body>
<p>Vom prezenta in continuare modul de realizare a unei linii de comentariu.</p>
<-- Aceasta este o linie de comentariu -->
</body>
</html>
Seminar
1. Creati un fisier com.html
2. Introduceti textul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vedea cum arata acest fisier.
Confidential
Page 10
3/25/2016
Vom considera urmatorul exemplu pentru a exemplifica toate aceste subset-uri de hedere posibile intr-un fisier HTML:
<html>
<head>
<title>Folosirea hedere-lor</title>
</head>
<body>
<H1>Acest text a fost scris folosind heder-ul H1</H1><br>
<H2>Acest text a fost scris folosind heder-ul H2</H2><br>
<H3>Acest text a fost scris folosind heder-ul H3</H3><br>
<p>Acesta este un text simplu.</p>
<H4>Acest text a fost scris folosind heder-ul H4</H4>
<H5>Acest text a fost scris folosind heder-ul H5</H5>
<H6>Acest text a fost scris folosind heder-ul H6</H6>
</body>
</html>
Seminar
1. Creati un fisier text.html
2. Introduceti codul HTML de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vedea cum arata fisierul
Modul de afisare a unui text poate de asemenea sa fie controlat folosind urmatoarele perechi de tag-uri:
<B>, </B> - pentru a schimba textul in bold
<I>, </I> - pentru a schimba textul in italic
<U>, </U> - pentru a schimba textul in text subliniat
<EM>, <EM> - va afisa un text de tip italic dar mai puternic
<STRONG>,</STRONG> - va afisa textul sub forma bold
<TT>,</TT> - text monospatiu
Vom prezenta in continuare un fisier in care vom discuta toate aceste tag-uri:
<html>
<head>
<title>Folosirea tagurilor pentru text</title>
</head>
<body>
<p>Aceasta este un text regulat </p><br>
<B>Acesta este un text bold tag B si /B<BR>
<I>Acesta este un text italic- tag I si /I<BR>
<U>Aceasta este un text subliniat tag U si /U<BR>
<EM>Aceasta este un text italic si puternic tag EM si /EM<BR>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 11
3/25/2016
<code>,</code> - textul dintre aceste doua tag-uri va apare in acelasi mod ca si tag-ul TT
<kbd>,</kbd> - textul dintre aceste doua tag-uri va apare in format keyboard
<samp>,</samp> - textul dintre aceste doua tag-uri va apare ca text monospatiu
<var>,</var> - textul dintre aceste doua tag-uri va apare italic
<cite>,</cite> - textul dintre aceste doua tag-uri va fi italic si va reprezenta text din bibliografie
<blockquote>,</blockquote> - un alt mod de a afis un text - paragraf distantat
<dfn>,</dfn> - definitie de termeni text regular
<address>, </address> - text care este folosit pentru a defini o adresa si apare italic
Vom considera in continuare un exemplu in care vom folosi toate aceste perechi de tag-uri:
<html>
<head>
<title>Folosirea altor tag-uri</title>
</head>
<body>
<code>
Acest text a fost creat folosind tag-ul code.<br>
</code>
<kdb>
Acest text a fost creat folosind tag-ul kbd. <br>
</kdb>
<samp>
Aceasta este un text monospatiu folosind tag-ul samp. <br>
</samp>
<var>
Aceast text este italic si a fost folosit tag-ul var. <br>
</var>
<cite>
Aceast text a fost creat folosind tag-ul cite si va apare italic. <br>
</cite>
<blockquote>
Acest text a fost creat tagul blockquote.<br>
</blockquote>
<dfn>
Acest text a fost creat folosind tag-ul dfn.
</dfn>
<br>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 12
3/25/2016
<address>
Acest text a fost creat folosind tag-ul address.<BR>
Emilian Popa <BR>
Calea Bucuresti<BR>
Craiova <BR>
Dolj<BR>
</address>
</body>
</html>
Seminar
1. Creati fisierul tag.html folosind notepad.exe.
2. Introduceti codul de mai sus
3. salvati fisierul
4. Folositi IE sau Netscape pentru a vizuliza fisierul.
Am vazut ca in cazul paragrafului obisnuit tagurile <p> si </p> spatiile si tastele return sunt ignorate de catre browserul
IE sau Netscape. Sunt insa situatii cind dorim sa avem textul cu un anumit format de aceea a fost introdusa o alta
comanda de formatare si anume perechea de tag-uri <pre> si </pre> .
Mai jos vom considera un exemplu in care vom folosi atit perechea de taguri <p> si </p> cit si perechea de taguri <pre>
si </pre> pentru a obtine un text formatat.
<html>
<head>
<title>Folosirea textului formatat</title>
</head>
<body>
<p>
Singur vintul, colo iata.
Adormise la racoare
Sub o salcie plecata
Somnoros in sus el cata
catre soare.
Mai e mult ! Si ca sa-i fie
Scurta vremea, pina pleaca,
El se uita pe cimpie,
Fluiera si nu mai stie
Ce sa faca.
</p>
<pre>
Singur vintul, colo iata.
Adormise la racoare
Sub o salcie plecata
Somnoros in sus el cata
catre soare.
Mai e mult ! Si ca sa-i fie
Scurta vremea, pina pleaca,
El se uita pe cimpie,
Fluiera si nu mai stie
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 13
3/25/2016
Ce sa faca.
</pre>
<p>
Partea de sus a textului a fost introdus folosind tag-ul <b> p </b> si <b> /p </b> .<br>
</p>
<p>
Partea de jos a textului a fost introdus folosind tag-ul <b> pre </b> si <b> /pre </b> .
</p>
</body>
</html>
Confidential
Page 14
3/25/2016
<LI> Optiunea 3
<LI> Optiunea 4
<LI> Optiunea 5
</OL>
<br>
<p>Aceasta este o lista neordonata.</p><br>
<UL>
<LI> Optiunea 1
<LI> Optiunea 2
<LI> Optiunea 3
<LI> Optiunea 4
<LI> Optiunea 5
</UL>
</body>
</html>
Seminar
1. Creati un fisier lista.html
2. Introduceti textul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vedea cum arata fisierul respectiv
Exista atribute care pot fi folosite atunci cind definim o lista ordonata:
Vom prezenta in continuare un exemplu in care o sa folosim toate aceste tipuri de liste:
<html>
<head>
<title>Atributele unei liste ordonate</title>
</head>
<body>
<p>Lista implicita</b><br>
<OL>
<LI> Opt 1
<LI> Opt 2
<LI> Opt 3
<LI> Opt 4
<LI> Opt 5
</OL>
<p>Lista care incepe cu numarul 4</p><br>
<OL start=4>
<LI> Opt 1
<LI> Opt 2
<LI> Opt 3
<LI> Opt 4
<LI> Opt 5
</OL>
<p>Lista care foloseste cifre romana</p>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 15
3/25/2016
<OL type=I>
<LI> Opt 1
<LI> Opt 2
<LI> Opt 3
<LI value=10> Opt 4
<LI> Opt 5
</OL>
</body>
Seminar
1. Creati un fisier ol.html
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul
Lista neordonata are urmatorul atribut:
type care poate fi disc, square si circle
<html>
<head>
<title>Atributele unei liste ordonate</title>
</head>
<body>
<p>Lista implicita type=disc</b><br>
<UL type=disc>
<LI> Opt 1
<LI> Opt 2
<LI> Opt 3
<LI> Opt 4
<LI> Opt 5
</UL>
<p>Lista cu atributul type=square</p><br>
<UL type=square>
<LI> Opt 1
<LI> Opt 2
<LI> Opt 3
<LI> Opt 4
<LI> Opt 5
</UL>
<p>Lista cu atributul type=circle</p>
<UL type=circle>
<LI> Opt 1
<LI> Opt 2
<LI> Opt 3
<LI> Opt 4
<LI> Opt 5
</UL>
</body>
</html>
Confidential
Page 16
3/25/2016
Seminar
1. Creati fisierul ul1.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul
Liste de definitii
Vom prezenta in continuare un mod de definire a unei liste:
<DL>
<DT> Administrator
<DD> O persoana care administreaza bunurile unei firne
<DT> Contabil
<DD>O persona care administreaza contabilitatea unei firme
<DT>Director Technic
<DD>O persoana care conduce din punct de vedere tehnic o companie
<DT>Director General
<DD>O persoana care conduce o anumita companie.
</DL>
<HTML>
<HEAD>
<TITLE>Folosirea unei liste definite</TITLE>
</HEAD>
<BODY>
<p> Vom prezenta in continuare o lista definita </p>
<DL>
<DT> <b><i>Administrator</b></i>
<DD> O persoana care administreaza bunurile unei firne
<DT> <b><i>Contabil</b></i>
<DD>O persona care administreaza contabilitatea unei firme
<DT><b><i>Director Technic</b></i>
<DD>O persoana care conduce din punct de vedere tehnic o companie
<DT><b><i>Director General</b></i>
<DD>O persoana care conduce o anumita companie.
</DL>
</BODY>
</HTML>
Seminar
1. Creati fisierul listdef.html
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul HTML
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 17
3/25/2016
Se pot de asemenea creea liste in interiorul altor liste . Vom prezenta mai jos un exemplu de astfel de lista:
<html>
<head>
<title>Lista in lista</title>
</head>
<body>
<pre>Mai jos este prezentata o lista in interiorul altei liste.</pre>
<OL>
<LI> Introducere
<LI> Capitolul 1
<UL>
<LI> Sectiunea 1.1
<LI> Sectiunea 1.2
<LI> Sectiunea 1.3
</UL>
<LI> Capitoul 2
</OL>
</body>
</html>
Seminar
1. Creati un fisier lista1.html
2. Editati acest fisier folosind notepad.exe si introduceti codul de mai sus
3. Salvati fisierul respectiv
4. Folositi IE sau Netscape pentru a vizualiza fisierul respectiv
align=top | middle
Confidential
Page 18
3/25/2016
Astfel daca vom folosi comanda align=top atunci text-ul care urmeaza dupa o imagine grafica va fi aligniat la partea de
sus a imagini, pe cind comanda align=middle va alignia text la mijlocul imagini.
Vom considera in continuare un exemplu de folosire a comenzi align.
<html>
<head>
<title>Alignierea unui text la o imagine grafica</title>
</head>
<body>
<img src=mat.gif align=top alt=Exemplu de matrita> Aceasta este un exemplu de text aliniat la
partea de sus a imagini. <br>
<HR>
<img src=mat.gif align=middle alt=Exemplu de matrita> Acesta este un exemplu de text aligniat
la partea de mijloc a unei imagini.
</body>
</html>
Daca veti pune mouse-ul deasupra imagini pentru o perioada de timp va apare descrierea data de tag-ul alt.
Seminar
1. Creati un fisier img.html
2. Introduceti in acest fisier codul HTML de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul respectiv
5. Puneti mouse-ul pe o imagine si asteptati pina cind va apare descrierea data de tag-ul ALT.
Confidential
Page 19
3/25/2016
Pentru ca browser-ul sa ajunga la aceea sectiune va trebui sa definim link-ul in felul urmator:
<a href=#nume_ancora>Link la sectiunea definita anterior</a>
Sa consideram cazul unei liste de vopsele :
<html>
<head>
<title>Folosirea link-urilor de sectiune</title>
</head>
<body>
<p style="font: 18pt times">Pachetele de produse oferite de firma noastra</p>
<OL>
<LI><a href="#100ab50"> Pachetul 100 AB 50 </a>
<LI><a href="#200ab50"> Pachetul 200 AB 50 </a>
</OL>
<HR width=50% size=3 align=left>
<pre style=" font: 16pt times " ><a name="100ab50"><b> Pachetul 100 AB 50 </a>
<a href="#top">top</a></b></pre>
<OL>
<LI> Periute de dinti
<LI> Spray pentru improspatarea respiratiei
<LI> Deodorant
<LI> Gel pentru dus
<LI> Sapun deodorant
<LI> Sapun de toaleta
<LI> Spuma de ras
<LI> Detergent rufe
<LI> Inalbitor universal
<LI> Spray pentru prespalare
<LI> Spray pentru incaltaminte
<LI> Concentrat de curatare
<LI> Spray pentru lustruit mobila
<LI> Detergent pentru toaleta
<LI> Detergent lichid pentru vase
<LI> Bureti de bucatarie din otel
<LI> Sampon pentru covoare si tapiterie
<LI> Produs pentru curatat obiecte metal
<LI> Spray pentru curatarea geamurilor
<LI> Spray pentru finisare
<LI> Spray pentru lentile
</OL>
<HR size=3 width=50% align=left>
<pre style=" font: 16pt times " ><a name="200ab50"><b> Pachetul 200 AB 50 </a>
<a href="#top">top</a></b></pre>
<OL>
<LI> Periute de dinti
<LI> Spray pentru improspatarea respiratiei
<LI> Deodorant
<LI> Gel pentru dus
<LI> Sapun deodorant
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 20
3/25/2016
Confidential
Page 21
3/25/2016
Seminar
1. Creati fisierul link2.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul respectiv
Se pot realiza si alte tipuri de link-uri . Astfel se pot pune intr-un fisier HTML link-uri care sa ne permita sa trimitem un
fisier sau sa aducem anumite fisiere de pe un server ftp sau un server de tip gopher.
Pentru a trimite un email se foloseste urmatoare linie de link:
<a href=mailto:epopa@mci.com> Emilian Popa </a> Acest text trebuie scris sub urmatoarea forma:
Aceasta linie de comanda ne permite sa trimitem un e-mail la adresa epopa@mci.com atunci cind apasam pe aceasta
adresa de e-mail.
Se mai pot folosi si alte servici internet, spre exemplu putem pune pe site fisiere care pot fi luate de alti folosind
serviciul ftp. Pentru a realiza acest lucru se foloseste comanda :
<a href=ftp://ftp.cdrom.com/tmp/noilefis.zip>Noua arhiva cu fisierele folosite </a>
Pentru a aduce aceste fisiere pe computerul tau vei folosi serviciile ftp care vor salva fisierele curente pe computerul tau.
Se poate de asemenea accesa o anumita sectiune dintr-un fisier HTML comanda pentru a accesa acea sectiune este:
<a href=sport1.html#Sporturi>Sport</a> care va accesa sectiunea Sporturi din fisierul sport1.html .
Se poate de asemenea crea un link la o pagina web folosind o imagine drept descrierea link-ului in locul unui text.
Pentru a realiza acest link putem folosi comanda:
<a href=sport.html alt=Informatii din sport><img src=sport.gif></a>
In acest caz daca se va apasa pe link-ul respectiv atunci va fi afisat fisierul sport.html.
Tabele
Vom discuta in contnuare despre tabele si folosirea lor in limbajul HTML. Formatul general pentru un tabel este:
<TABLE>
<TR>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
In acest caz vom avea un tabel care are un rind si doua coloane. Se observa ca pentru a defini acest tabel a fost folosit
mai intii obtiunea <table></table> care este folosita pentru a defini tabelul respectiv si apoi optiunea <tr></tr> pentru a
defini un rind in tabelul respectiv. Obtiunile <td></td> definesc o coloana in cadru tabelului respectiv. Sa creem in
continuare un tabel care are doua linii si doua coloane. Textul sursa pentru a defini acest tabel este:
<HTML>
<HEAD>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 22
3/25/2016
align = x
border = x
cellspacing = x
cellpading = x
acestei celule
Confidential
Page 23
3/25/2016
Confidential
Page 24
3/25/2016
Exemplu rowspan = 2
<html>
<head>
<title>Un alt mod de a creea tabele</title>
</head>
<body>
<table border=1>
<tr>
<td rowspan=2> rindul 1 col. 1 <br>
rowspan=2
</td>
<td> rindul 1 col. 2 </td>
<td> rindul 1 col 3 </td>
</tr>
<tr>
<td> rindul 2 col. 1 </td>
<td> rindul 2 col. 2 </td>
</tr>
</table>
</body>
</html>
Exemplu colspan = 2
<html>
<head>
<title>Un alt mod de a creea tabele</title>
</head>
<body>
<table border=1>
<tr>
<td colspan=2> rindul 1 col. 1 <br>
rowspan=2
</td>
<td> rindul 1 col. 2 </td>
<td> rindul 1 col 3 </td>
</tr>
<tr>
<td> rindul 2 col. 1 </td>
<td> rindul 2 col. 2 </td>
<td> rindul 2 col. 3 </td>
<td> rindul 2 col. 4 </td>
</tr>
</table>
</body>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 25
3/25/2016
</html>
Seminar
Creati un fisier tabel2.html
Editati acest fisier folosind notepad.exe
Introduceti codul html pentru primul exemplu de mai sus
Salvati fisierul
Folositi IE sau Netscape pentru a vedea tabelul
Editati din nou fisierul tabel2.html folosind notepad
Faceti schimbarile conforme cu al doilea exemplu de mai sus
Salvati fisierul
Folositi IE si Netscape pentru a vedea tabelul
In continuare vom discuta modul de colorare a celulelor unui tabel folosind posibilitatile pe care ni le pune la dispozitie
limbajul HTML . Pentru a defini o culoare in acest limbaj se foloseste un numar hexadecimal cum se va vedea mai
departe.
Pentru a adauga culoare la o celula se foloseste atributul bgcolor si numarul hexadecimal care defineste culoarea
respectiva. Vom considera in continuare exemplu unui tabel in care am folosit mai multe culori pentru celulele tabelului.
<html>
<head>
<title>Tabel cu celule colorate</title>
</head>
<body>
<table border=1>
<tr>
<td bgcolor=#CC9999> rindul 1 coloana 1</td>
<td bgcolor=#FFCC99> rindul 1 coloana 2</td>
<td bgcolor=#CCCCCC> rindul 1 coloana 3</td>
</tr>
<tr>
<td bgcolor=#CCCCCC> rindul 2 coloana 1</td>
<td bgcolor=#CC9999> rindul 2 coloana 2</td>
<td bgcolor=#FFCC99> rindul 2 coloana 3</td>
</tr>
</table>
</body>
</html>
Vom prezenta in continuare o lista cu cele mai folosite culori in limbajul HTML:
Confidential
Page 26
3/25/2016
Bineinteles ca in interiorul unei celule din tabel putem introduce o imagine dupa cum se va vedea in exemplu care
urmeaza:
<html>
<head>
<title> Tabel cu imagini</title>
</head>
<body>
<table border=1>
<tr>
<td>
<img src=cellphone.gif>
</td>
<td>
rindul 1 coloana 2
</td>
</tr>
<tr>
<td>
rindul 2 coloana 1
</td>
<td>
rindul 2 coloana 2
</td>
</tr>
</table>
</body>
</html>
Seminar
1. Creati un fisier tabimg.html
2. Editati acest fisier folosind notepad.exe
3. Introduceti codul de mai sus
4. Salvati fisierul
5. Incarcati fisierul folosind IE sau Netscape
Confidential
Page 27
3/25/2016
Pentru tabele se poate folosi tagul <th> in locul tagului <td> pentru a realiza hedere-le tabelului. Prin heder se intelege
un text scris ingrosat care sa scoata in evidenta capetele de tabele. Vom prezenta in continuare un exemplu:
<html>
<head>
<title> Folosirea hederelor de tabele</title>
</head>
<body>
<p style="font: 16pt times"><i>Procentajul vinzarilor realizate</i></p>
<table border=1>
<tr align="center">
<th>
Anul
</th>
<th>
Pantofi %
</th>
<th>
Ghete %
</th>
</tr>
<tr align="center">
<th>
1970
</th>
<td>
50%
</td>
<td>
50%
</td>
</tr>
<tr align="center">
<th>
1980
</th>
<td>
76%
</td>
<td>
24%
</td>
</tr>
<tr align="center">
<th>
1990
</th>
<td>
40%
</td>
<td>
60%
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 28
3/25/2016
</td>
</tr>
</table>
</body>
</html>
Seminar
1. Creati un fisier theder.html
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul
Confidential
Page 29
3/25/2016
partea stinga vor afisa continutul fisierului in aceasta portiune dupa cum se va vedea mai
tirziu. Prin link se intelege relatia care se realizeaza intre un cuvint si un grup de cuvinte prin
care atunci cind vom apasa pe acest cuvint sau grupuri se va deschide un fisier HTML .
</body>
</html>
Acum ca am creat cele doua fisiere HTML va trebui sa creem fisierul care sa imparta ecranul in doua regiuni, de fapt
fisierul care defineste cele doua framuri pe care sa le folosim ulterior. Vom denumi acest fisier frame.html si el va fi
fisierul care va trebui sa fie incarcat atunci cind dorim sa vedem rezultatul codului care au fost scrise in cele trei fisiere.
A aparut in codul sursa de mai sus si tagul div care va fi discutat atunci cind vom discuta tipurile de stiluri pentru o
pagina Web.
Codul sursa al fisierului frame html este:
<html>
<head>
<title>Impartirea in frame-URL</title>
</head>
<frameset cols=250, *>
<frame src=meniu.html>
<frame src=princ.html>
</frameset>
</html>
In codul sursa al fisierului frame.html au aparut doua noi comenzi astfel comanda <frameset > este comanda care
imparte de fapt spatiul ecran in mai multe regiuni. De exemplu comanda <frameset cols=25%,25%,25%,25%>
imparte spatiul ecran in patru coloane egale , pe cind comanda <frameset rows=25%,25%,25%,25%> va imparti
spatiul ecranului in patru rindURL egale. Odata impartit spatiul in regiuni va trebui sa definim fisierul HTML care va fi
folosit pentru afisare in portiunea respectiva, acest lucru se va realiza folosind comanda : <frame src=fisier.html> . Va
trebui sa definim atitea fisiere HTML cite regiuni avem definite.
Este esential faptul ca in acest caz perechea de comenzii <frameset></frameset> inlocuieste perechea <body></body>.
Seminar
1. Tastati codul sursa HTML in fisierul meniu.html si salvati fisierul (folosind Notepad.exe).
2. Tastati codul sursa HTML in fisierul princ.html si salvati fisierul (folosind Notepad.exe).
3. Tastati codul sursa HTML in fisierul frame.html si salvati fisierul (folosind Notepad.exe).
4. Folositi IE sau Netscape pentru a incarca fisierul frame.html .
5. Modificati valorile corespunzatoare impartiri ecranului din fisierul frame.html .
6. Salvati fisierul.
7. Folositi IE sau Netscape pentru a incarca fisierul frame.html si a observa modificariile.
8. Modificati fisierul frame.html astfel sa avem rindURL in loc de coloane .
9. Salvati fisierul .
10. Folositi IE sau Netscape pentru a incarca fisierul frame.html si a observa modificariile.
Vom discuta in continuare tag-urile care pot fi folosite cu comanda <frameset>:
cols=x Acest atribut creaza coloane, va trebui aici sa dam o valoare pentru fiecare portiune in care a fost impartit
ecranul. Se poate realiza acest lucru folosind procente sau valori care reprezinta numarul de pixeli pentru portiunea
respectiva.
Confidential
Page 30
3/25/2016
rows=x Creaza rinduri folosind acelasi algoritm care a fost folosit pentru a creea coloane.
border=x Aceasta comanda este folosita de Netscape (versiuni aparute dupa versiunea 3.0) pentru a controla grosimea
marginii . Valoarea este data in pixeli.
frameborder=x Este folosita de IE pentru a controla latimea margini in pixeli. Pentru Netscape versiuni mai recente de
versiunea 3.0 acest tag poate lua valori yes sau no.
framespacing=x Este folosit de IE pentru a controla latimea margini
Tag-URLle pentru comanda <frame> sunt :
frameborder=x Vom folosi aceasta comanda pentru a afisa grosimea unui frame individual . Pentru Netscape aceasta
comanda va avea optiuni yes si no pe cind pentru IE va trebui sa introducem o valoare in pixeli
marginheight=x Aceasta optiune este folosita pentru a controla imaltinea margini frame-ului
marginwidth=x Comanda care va fi folosita pentru a defini marimea latimi in pixels.
name=x Acest tag este critic pentru ca ne permite sa dam nume la o anumita portiune a unui frame ce ne va permite sa
deschidem anumite fisiere html in acesta portiune folosind acest nume.
noresize Daca vom plasa acesat tag in definitia unui anumit frame atunci nu modificarea acestei portiuni nu va mai fi
permisa si frame-ul va fi fixat in aceasta pozitie.
scrolling=x Aici se pot folosi argumente cum ar fi yes, no si auto care ne permit sa controlam aparitia unei bare de tip
scrollbar . Daca s-a folosit comanda auto atunci aparitia acestei bare va fi lasata in seama browser-ului care va afisa o
astfel de bara atunci cind va fi necesar.
src=x Aceasta comanda ne va permite sa folosim anumit cod HTML in potiuni definite anterior.
Seminar
1. Editati fisierul frame.html folosind aplicatia notepad.exe
2. Modificati linia care defineste frame-URLle astfel: <frame src=princ.html> sa arate ca mai jos:
<frame src=princ.html marginwidth=10 marginheight=10 noresize scrolling=auto>
3. Folositi IE sau Netscape pentru a incarca fisierul si pentru a observa modificarile care s-au facut in acel fisier
4. Editati fisierul frame.html folosind notepad.exe.
5. Modificati linia care defineste frame-URLle punind pentru tag-ul scrolling valoarea yes
6. Folositi IE sau Netscape pentru a incarca fisierul si a observa modificariile care s-au facut in acel fisier.
Vom discuta in continuare modul in care putem folosi optiunea target pentru a deschide un cod HTML intr-o anumita
portiune de pe ecran.
Vom creea cite un fisier HTML pentru fiecare obtiune din meniu.html. Astfel codul sursa pentru optiunea 1 va fi
opt1.html pentru optiunea 2 va fi opt2.html si asa mai departe pina la optiunea 4.
<html>
<head>
<title>Optiunea I</title>
</head>
<body>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 31
3/25/2016
Confidential
Page 32
3/25/2016
<title>Meniu</title>
</head>
<body>
<div align=left>
<a href="opt1.html" target=_self>Optiunea I</a>
<p>
<a href="opt2.html" target=_blank>Optiunea II</a>
<p>
<a href="opt3.html" target=_parent>Optiunea III</a>
<p>
<a href="opt4.html" target=_top>Optiunea IV</a>
</div>
</body>
</html>
3. Incarcati fisierul in IE sau Netscape si observati modificarile facute apasind pe fiecare link in parte. Pentru a reveni
la modul de asezare initial folositi comanda <Back> a browserului.
4. Modificati continutul fisierului frame.html sa nu mai contina margini modificind linia <frameset> ca mai jos:
<frameset frameborder=0 framespacing=0 border=0 cols="250, *" >
5. Incarcati fisierul in IE sau Netscape si observati noile modificari.
Se pune problema folosiri acestui cod HTML pe browsere care nu au posibilitatea de a afisa frame-uri in acest cod se
foloseste perechea de optiuni <noframes></noframes>. Intre aceste doua tag-uri se va introduce codul HTML care face
acelasi lucru ca si meniul.
Seminar
1. Editati fisierul frame.html
2. Inserati cele doua tag-uri <noframes></noframes>
3. Intre aceste doua tag-uri introduce urmatorul cod HTML
<noframes>
<center>
Bine ati venit. Ne pare bine sa va afisam site-ul nostru fara obtiunea frame. Pentru a vedea acest site
cu frame-uri va rugam sa faceti upgrade la browser.
</center>
<a href=opt1.html target=_blank>Optiunea I</a>
<a href=opt2.html target=_blank>Optiunea II</a>
<a href=opt3.html target=_blank>Optiunea III</a>
<a href=opt4.html target=_blank>Optiunea IV</a>
4.
</noframes>
Folositi IE si Netscape pentru a vedea noul cod HTML.
Confidential
Page 33
3/25/2016
Inline style sheet aceasta comanda foloseste tagurile HTML existente la care adauga stylul necesar. Spre exemplu
un paragraf poate fi controlat folosind comanda style=x in interiorul tagului <p>. O alta metoda consta in
folosirea tagurilor <span> si style=x combinate.
Embedded style sheet Aceast stil ne permite sa controlom stilul unei pagini folosind perechea de comenzii <style>
si </style> . Cele doua perechi de comenzii pot fi adaugate intre tagul <html> si tagul <body> al unui fisier HTML.
External linked style sheet In acest caz se va creea un fisier care va contine codul extern pentru style si el va avea
extensia .css si va fi incarcat de cite ori este necesara folosirea acestui stil. In acest caz modul de definire este diferit
de modul logic de folosire a stilului intr-un fisier HTML.
Confidential
Page 34
3/25/2016
</head>
<style>
BODY {background: #000000; color #FFFFFF; margin-top: .25in; margin-left:.75in; marginright:.75in}
H3 {font: 24pt verdana; color: #0000FF}
P {font: 18pt times; text-indent:0.5in }
A {color: #FF0000}
</style>
<body>
<h3>Exemplu de definire generala a stiului pentru o pagina Web</h3>
<p>In acest exemplu culoarea fontului, culoarea textului, marginile pagini in partea de sus
stinga si dreapa au fost setate folosind comanda style.</p>
<br>
<p>
De asemenea am redefinit tagul H3 sa contina fontul verdana avind marimea de 24 pt si
coloarea albastra. Tagul p a fost modificat sa aiba fontul times new roman 19 pt .
</p>
<a href=style.html>Linkul a fost definit sa aiba culoarea rosie</a>
</body>
</html>
Seminar
1. Creati un fisier numit style1.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati acest fisier
4. Folositi IE sau Netscape pentru a vedea cum arata acest fisier
5. Modificati codul HTML dupa cum urmeaza (modificati culorile pentru background si text)
<html>
<head>
<title>Folosirea Stilului Individual pentru o pagina Web</title>
</head>
<style>
BODY {background: #000000; color #FFFFFF; margin-top: .25in; margin-left:.75in; marginright:.75in}
H3 {font: 24pt verdana; color: #0000FF}
P {font: 18pt times; text-indent:0.5in;color: #FFFFFF }
A {color: #FF0000}
</style>
<body>
<h3>Exemplu de definire generala a stiului pentru o pagina Web</h3>
<p>In acest exemplu culoarea fontului, culoarea textului, marginile pagini in partea de sus
stinga si dreapa au fost setate folosind comanda style.</p>
<br>
<p>
De asemenea am redefinit tagul H3 sa contina fontul verdana avind marimea de 14 pt si
coloarea albastra.
</p>
<a href="style.html">Linkul a fost definit sa aiba culoarea rosie</a>
</body>
</html>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 35
3/25/2016
6.
Folosirea unui fiser extern in care a fost definit stilul pe care il folosim intr-un
fisier
Vom prezenta in continuare modul cum putem acesa un fiser extern cu extensia .css in care am definit stilul pe care
vrem sa-l folosim in continuare. Pentru a realiza acest lucru va trebui sa creem un fisier numit style.css si sa introducem
in acel fisier urmatorul cod HTML:
<style>
BODY {background: #000000; color #FFFFFF; margin-top: .25in; margin-left:.75in; marginright:.75in}
H3 {font: 24pt verdana; color: #0000FF}
P {font: 18pt times; text-indent:0.5in }
A {color: #FF0000}
</style>
Se observa ca au fost introduse definitiile dintre cele doua tag-uri <style></style> din exemplu anterior.
Pentru a incarca acest cod intr-un fisier HTML ce urmeaza sa facem este sa inseram urmatorul cod in fisierul HTML
intre tag-urile <head></head> <link rel=stylesheet href=style.css type=text/css>
Codul sursa HTML in acest caz va arata in felul urmator:
<head>
<title>Folosirea unei fisier extern de style</title>
<link rel= stylesheet href=style.css type=text/css>
</head>
Seminar
1. Creati un fisier style.css avind urmatorul cod HTML:
<style>
BODY {background: #000000; color #FFFFFF; margin-top: .25in; margin-left:.75in; marginright:.75in}
H3 {font: 24pt verdana; color: #0000FF}
P {font: 18pt times; text-indent:0.5in }
A {color: #FF0000}
</style>
2. Editati fisierul style.html definit anterior si modificati-l sa arate ca mai jos:
<html>
<head>
<title>Folosirea Stilului Individual pentru o pagina Web</title>
</head>
<link rel=stylesheet href="style.css" type="text/css">
<body>
<h3>Exemplu de definire generala a stiului pentru o pagina Web</h3>
<p>In acest exemplu culoarea fontului, culoarea textului, marginile pagini in partea de sus
stinga si dreapa au fost setate folosind comanda style.</p>
<br>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 36
3/25/2016
<p>
De asemenea am redefinit tagul H3 sa contina fontul verdana avind marimea de 14 pt si
coloarea albastra.
</p>
<a href="style.html">Linkul a fost definit sa aiba culoarea rosie</a>
</body>
</html>
3. Salvati fiserul respectiv
4. Incarcati fisierul in IE sau Netscape pentru a vedea modificarile facute.
font-family acest argument se refera la alegerea fontului care urmeaza a fi folosit pentru un anumit text. Exemplu
pentru folosirea acestui argument :{font-family: Times}; daca pe un anumit computer nu exista un anumit font
atunci se poate alege un font care sa fie o alternativa pentru acesta {font-family: times, garamond} sau se poate
folosi numele unei famili de fontURL cum ar fi spre exemplu: {font-family: serif} Cele mai cunoscute familii de
fonturi sunt : Serif, Sanserif, Cursive, Fantasy, Monospace.
font-size defineste marimea unui caracter si poate fi exprimata in: puncte, inch, centimetri, pixeli si procentaj.
Pentru puncte simbolul folosit este pt spre exemplu {font-size: 18pt}, pentru inch simbolul folosit este in spre
exemplu {font-size: 1in}; pentru centimetri simbolul folosit este cm spre exemplu: {font-size: 5cm}; pixeli px spre
exemplu {font-size: 24px} iar pentru procent se foloseste simbolul % spre exemplu: {font-size: 50%}
font-style defineste tipul de stil folosit pentru text si poate fi italic sau bold. Spre exemplu {font-style: italic}
font-weight marimea latimi literelor se numeste weight si acest parametru poate lua mai multi parametri pentru
un anumit font si anume: extra-light, demi-light, light, medium, extra-bolt, demi-bolt, bolt
text-decoration Acest atribut contine marimi cum ar fi: none, underline, italic, line-through
line-height Acest parametru defineste inaltimea textului in acelasi mod ca si fon-size folosind pentru marime
parametrii cum ar fi punctele, inch, centimetrii, pixeli etc. Un exemplu de folosire a acestui parametru este
redefinirea tag-ului de paragraf P {line-height: 14pt}
Vom incerca in continuare sa dam citeva exemple in care a fost folosit stilul pentru definirea modului cum un paragraf
poate fi afisat pe ecran.
<html>
<head>
<title>Folosirea comenzii style</title>
<style>
BODY {background: #000000; margin-top:.25in; margin-left:.75in;
margin-right:.25in;}
</style>
</head>
<body >
<p align=center style="font : 28pt times ; color : #FFFF00">
Technoredactare profesionala
</p>
<br>
<p align=left style="font: 20pt times; color:#FFFFFF">
<i style="font: 30pt; font-style:italic; font-weight:bold">M</i>ulte dintre principiile de baza ale
technoredactarii computerizate au fost deja abordate in numerele anterioare ale revistei noastre.<br>
O data ce ati patruns in tainele realizarii unor buletine informative atractive, calitatea documentelor
tiparite scoase de o imprimanta laser sau cu jet de cerneala nu va va mai multumi. Este momentul sa
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 37
3/25/2016
recurgeti la serviciile unui birou DTM sau la o imprimanta speciala care va vor transforma
documentele create prin technoredactare computerizate in produse tiparite profesional.
<br><br>
<i style="font: 30pt; font-style:italic; font-weight:bold">P</i>rimele cuvinte scrise au aparut acum
400 de ani, pe vremea cind fenicienii foloseau simboluri pentru reprezentarea cifrelor si a obiectelor si
pentru a tine evidenta contabila a propietatilor fiecarui individ. Scrierea acelor vremuri era compusa
din zeci de mii de simboluri, fiecare dintre ele reprezentind un singur obiect ori o singura actiune, si
era complet diferita de scrierea alfabetica pe care o folosim astazi.<br><br>
<b style="font: 24pt; color:#FF0000"><i style="font: 30pt; font-style:italic; fontweight:bold">C</i>arti din piatra !</b>
<br><br>
<i style="font: 30pt; font-style:italic; font-weight:bold">I</i>nventarul hirtie era inca foarte departe,
asa ca majoritatea acestor simboluri erau gravate pe bucati de piatra ori lut proaspat. Nici unele, nici
altele nu erau usor de purtat sau de pastrat. Fenicienilor le-ar fi fost cam greu sa gaseasca o incapere
suficient de mare pentru a depozita tablitele de argila care sa cuprinda textul pentru un singur ziar, ca
sa nu mai vorbim despre cel al unei carti!
</p>
</body>
</html>
Seminar
1. Creati fisierul tech.html si introduceti textul de mai sus folosind notepad.exe.
2. Salvati fisierul.
3. Folositi IE sau Netscape pentru a observa modificarile care au fost facute textului de catre comenziile de stil.
margin-left pentru a seta o margine in partea stinga se pot folosi puncte, inch, centimetri sau pixeli. Spre exemplu
pentru a seta o margine de inches se va folosi comanda {margin-left: 0.75in}
margin-right este identica cu setarea de mai sus numai ca in acest caz se seteaza marginea din dreapata. Spre
exemplu {margin-right: 75px}
margin-top seteaza o margine in partea de sus al unui fisier HTML . Spre exemplu {margin-top: 20pt}
text-indent - se foloseste pentru a crea spatiu si se pot folosi inch, pixeli, centimetri sau puncte {text-indent :
0.5in}. Avind acelasi efect ca si apasarea tastei tab.
text-align se foloseste pentru a alinia textul care urmeaza si care poate fi aligniat la stinga, dreapta sau in centru.
Seminar
1. Editati fisierul tech.html si modificati-l conform codului de mai jos.
<html>
<head>
<title>Folosirea comenzii style</title>
<style>
BODY {background: #000000; margin-top:.25in; margin-left:.75in;
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 38
3/25/2016
margin-right:.25in;}
</style>
</head>
<body >
<p align=center style="font : 28pt times ; color : #FFFF00">
Technoredactare profesionala
</p>
<br>
<p align=left style="font: 20pt times; color:#FFFFFF">
<i style="font: 30pt; font-style:italic; font-weight:bold; text-indent:0.75in">M</i>ulte dintre
principiile de baza ale technoredactarii computerizate au fost deja abordate in numerele anterioare ale
revistei noastre.<br>
O data ce ati patruns in tainele realizarii unor buletine informative atractive, calitatea documentelor
tiparite scoase de o imprimanta laser sau cu jet de cerneala nu va va mai multumi. Este momentul sa
recurgeti la serviciile unui birou DTM sau la o imprimanta speciala care va vor transforma
documentele create prin technoredactare computerizate in produse tiparite profesional.
<br>
</p>
2.
3.
</body>
</html>
Salvati fisierul .
Folositi IE sau Netscape pentru a vedea rezultatele acestui fisier. Se observa spatiul de la inceputul paragrafului
datorat optiuni text-indent.
Confidential
Page 39
3/25/2016
Principalul element stocat pentru o baza de date este recordul. Fiecare din acesta
inregistrare contine cimpuri care se numesc cimpuri. In cartea de telefon fiecare nume
introdus impreuna cu informatiile despre el este o inregistrare. Aceasta la rindul ei contine
cimpuri de informatie cum ar fi : nume, strada, bloc si numar de telefon.
</p>
<H2>De ce trebuie sa folosim baze de date</H2>
<p style=text-align: left>
De ce sa folosim o baza de date? Care sunt avantajele folosiri acesteia?<br>
Creerea unei baze de date ne permite sa folosim unelte care ne pot ajuta sa:<br>
<OL>
<LI> Sa adaugam si sa stergem recorduri
<LI> Sa gasim si sa editam recorduri
<LI> Sa vedem o parte din baza de date
<LI> Sa facem analiza statistica pentru intreaga baza de date
</OL>
</p>
</body>
</html>
Seminar
1. Creati un fisier text1.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul
Confidential
Page 40
3/25/2016
Confidential
Page 41
3/25/2016
Linie de text:
<TEXTARE NAME= numele variabilei ROWS=numar COLS=numar>
Textul implicit
</TEXTARE>
Astfel in acest cimp se va afisa textul implicit care poate avea un numar de rinduri ROWS si un numar de coloane
COLS. Aici vom putea textul pe care il dorim si acest text va fi preluat de variabila pe care o definim atunci cind vom
trimite forma respectiva.
<html>
<head>
<title>Exemplu de text introdus cu comanda TEXTAREA</title>
</head>
<body>
<form>
<textarea name="text1" rows="10" cols="50">Comentariile d-voastra:
</textarea>
</form>
</body>
</html>
Seminar
1. Creati un fisier text1.html folsind notepad.exe
2. Introduceti codul HTML de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza acest document
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 42
3/25/2016
Tag-ul INPUT
Formatul general al unei comenzi input este :
<INPUT TYPE=tipul de input name=variabila size=numar maxlength=numar>
Drept tipuri de input pot fi folosite:
text aceasta comanda creeaza o singura linie text a carei lungime poti sa o alegi . Atit numarul de
caractere cit si lungimea maxima acestei linii poate fi aleasa . De aceea este posibil sa se introduca o linie
care are un numar de caractere mai mare sau mai mic decit ce este vizibil pe ecran.
Un exemplu de astfel de text este :
<input type=text name=last_name size=40 maxlength=40>
Se poate de asemenea introduce o valoare implicita pentru aceasta variabila acest lucru este realizat
folosind tag-ul value=valoare implicita
<html>
<head>
<title>Exemplu de folosirea butonului text</title>
</head>
<body>
<form>
Prenume:<input type=text name=prenume size=15 maxlength=15><br>
Nume: <input type=text name=nume size=15 maxlength=15><br>
Tara : <input type=text name=tara size=15 value=Romania>
</form>
</body>
</html>
Seminar
1. Creati un fisier form1.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE si Netscape pentru a vizualiza acest fisier
password aceasta comanda este similara cu comanda text numai ca in acest caz literele vor fi ascunse si
vor apare puncte sau alte simboluri pentru a ascunde continutul cuvintului care este folosit drept parola
<input type=password nume=parola size=25 maxlength=25>
<html>
<head>
<title>Folosirea unei parole</title>
</head>
<body>
<p>Forma pentru introducerea parolei</p>
<HR size=3 width=30% align=left>
<form>
Introduceti parola: <input type="password" name="parola"
size=12 maxlength=12>
</form>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 43
3/25/2016
</body>
</html>
Seminar
1. Creati un fisier parola.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza documentul respectiv
checkbox acest buton va permite sa realizati interfete de tip buton apasat pentru interfata dumneavoastra.
Acestea la rindul lor pot fi apasate sau nu in functie de aceasta stare pot transmite starea lor odata cu
trimiterea formei respective. Formatul acestei comenzii este:
<input type=checkbox name=butonil 1 CHECKED>Butonul 1
<input type=checkbox name=butonul 2> Butonul 2
<input type=checkbox name=butonul 3> Butonul 3
<input type=checkbox name=butonul 4> Butonul 4
Vom prezenta in continuare un exemplu folosind butoane checkbox:
<html>
<head>
<title>Meniu folosind butoane de tipul checkbox</title>
</head>
<body>
Ce calculator folositi pentru a accesa internetul :
<hr size=3 width=38% align=left>
<form>
<input type="checkbox" name="but1" checked> Pentium 133<br>
<input type="checkbox" name="but2" > Statie grafica Sun<br>
<input type="checkbox" name="but3" > Statie grafica HP<br>
<input type="checkbox" name="but4" > Statie grafica IBM
</form>
</body>
</html>
Seminar
1. Creati un fisier but1.html folosind notepad.exe
2. Introduceti codul de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza acest fisier
radio s-a observat ca-n cazul butoanelor de tip checkbox puteam alege mai multe variante si selectarea
unui buton nu ducea la deselectarea altora. Pentru a realiza acest lucru se vor folosi butoane de tip radio.
In acest caz pentru fiecare buton de tip radio este necesar cimpul VALUE care trebuie sa ia o valoare
diferita pentru fiecare buton.
<input type=radio name=computer value=Pentium 133> Pentium 133
<input type=radio name=computer value=Statie Sun> Statie Sun
<input type=radio name=computer value = Statie HP> Statie HP
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 44
3/25/2016
hidden acest tip de buton nu este folosit pentru a introduce date ci numai pentru a transmite valori pentru
o variabila catre un server Web sau un server de mesaje electronice. Formatul acestui buton este:
<input type=hidden name=variabila 1 value=valoare>
reset acest buton reseteaza toate valori introduse anterior . Formatul comenzii este :
<input type=RESET Value=Resetam valorile cimpurilor formei> sau <input type=RESET>
submit aceast buton este folosit pentru a trimite o forma completata anterior. Formatul acestei comenzi
este: <input type=SUBMIT> sau <input type=SUBMIT value=GO>
Confidential
Page 45
3/25/2016
1.
2.
3.
4.
Vom considera in continuare un exemplu general de forma pe care o putem folosi pe pagina noastra Web pentru a prelua
informatii de la utilizator:
<html>
<head>
<title>Un exemplu de forma folosita pe site pentru a cere informatii</title>
</head>
<body>
<form method="post" action="mailto:epopa@mci.com">
<p style="font : 18pt times; font-weight:bold">Abonati-va la lista noastra de mesaje
</p><br>
<HR size=3 width=50% align=left>
<p style="font: 14pt times">Va rugam sa introduceti urmatoarele
informatii:</p><br>
Nume : <input type="text" name="nume">
Prenume:<input type="text" name="prenume"><br>
<br>
Compania: <input type="text" name="companie">
E-mail: <input type="text" name="email"><br><br>
Unde a-ti auzit de noi:
<input type="radio" name="unde" value="internet">Internet
<input type="radio" name="unde" value="ziare">Ziare
<input type="radio" name="unde" value="tv">Televizor
<input type="radio" name="unde" value="radio">Radio
<br><br>
<HR size=3 width=50% align=left>
<p style="font:14pt times;">Comentariile d-voastra:</p><br>
<textarea name="comentariu" rows=8 cols=55>
</textarea>
<HR size=3 width=50% align=left>
<input type="reset" value="Sterge valorile introduse">
<input type="Submit" value="Trimite valorile introduse">
</form>
</body>
</html>
Seminar
1. Creati un fisier fm.html folosind notepad.exe
2. Introduceti codul HTML de mai sus
3. Salvati fisierul
4. Folositi IE sau Netscape pentru a vizualiza fisierul
Exemplu urmator il va constitui o lista de definiti, acesta ne permite sa alegem o optiune dintr-o lista data. Pentru a face
acest lucru va trebui sa definim lista de obiecte folosind urmatoarele comenzii:
<Select name=optiune>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 46
3/25/2016
Confidential
Page 47
3/25/2016
Multe pagini web folosesc CGI scripts care inseamna ca de fapt completezi o pagina de informatii si apoi apesi butonul Submit
care va apela un script CGI care va folosi aceste informatii. Dar aceste programele CGI sunt lente de aceea a fost necesar sa se
dezvolte alte aplicatii care sa mareasca viteza de reactie a pagini web si astfel a aparut un nou limbaj numit JAVA si in cazul
nostru vom studia JAVA script. In acest program imaginiile se pot schimba odata ce pui mousul deasupra lor sau calcule se pot
face fara a fi nevoie sa mai facem aplicatii CGI in spatele acestor aplicatii. Ce este mai important despre acest limbaj este ca nu
trebuie sa folosesti nici un limbaj de programare ce ai nevoie este un browser si un calculator care nici nu trebuie sa fie legat la
reteaua de calculatoare.
Astfel se stie ca stuctura unui program HTML este urmatoarea :
<html>
<head>
<title>
</title>
</head>
<body>
</body
</html>
Programele Java Script vor fi pozitionate intre </title> si </head>.
Ca si programul HTML Java Script este un program a carui sursa poate fi tastata in orice procesor text. El va fi inserat in
programul HTML care descrie pagina ta. Asa cum am aratat anterior el poate fi pozitionat intre </title> si </head> dar sunt
cazURL in care codul sursa va putea fi pozitionat si in segmentul <body></body> al fisierului HTML. Trebuie mentionat ca
inceputul unui paragraf care foloseste Java Script are urmatoarea structura : <script language = Java Script> si se termina ca
fiecare comanda din limbajul HTML cu cunoscuta structura </script>. Pentru prima formulare language=Java Script poate fi
ignorata pentru ca limbajul Java Script este cel implicit pentru toate browserele care exista pe piata la ora actuala.
Tot ce urmeaza dupa // pe aceeasi linie este considerat comentariu. De asemenea se poate folosi si sistemul de comentarii pe care
il gasiti in limbajul C /* pentru inceputul comentariului si */ pentru sfirsitul comentariului. Un exemplu de comentariu este aratat
mai jos:
/* acesta este inceputul comentariului
linia 1 comentariu
linia 2 comentariu
linia 3 comentariu
acesta este sfitrsitul comentariului*/
O alta metoda de a adauga text in limajul tau este sa folosesti o cazuta de dialog :
Alert (Va rugam sa folositi numai cifre !) aceasta linie de limbaj va afisa o fereastra care va avea acest dialog in interiorul ei.
O alta metoda care se foloseste pentru comentariu o puteti vedea in exemplu de mai jos :
<html>
<head>
<title>
<script language=Java Script>
<! va acunde acest comentariu pentru alti utilizatori
// sfirsitul comentariului ascuns -->
</script>
</title>
</head>
<body>
</body>
</html>
Exemplu 1
Confidential
Page 48
3/25/2016
Vom incerca acum sa creem un program care sa aiba structura generala HTML + Java.
Pentru a realiza acest lucru vom deschide un promp DOS alegind meniul <Start> <Program Files>
si <MS-DOS Prompt>. Vom schimba directorul de lucru intr-un director pe care il vom folosi pentru a creea acest program:
cd director_name este comanda pe care va trebui sa o folosim daca acest director nu exista il putem creea folosind comanda
mkdir director_name. Aici vom folosi editorul edit care este un editor universal care il gasiti sub Windows 98, NT , comanda
folosita va fi : edit ex1.html care ne va plasa in interiorul editorului edit. Aici vom tasta urmatorul text:
<html>
<head>
<title> Acesta este un ex. 1
</title>
</head>
<body>
<script language=Java Script>
alert(Acesta este primul meu program in Java Script !);
alert(Acest program a inceput sa-mi placa !);
</script>
</body>
</html>
Apoi vom salva programul in acest editor si vom deschide un browser, iar de aici vom folosi comanda <File> <Open> pentru a
deschide fisierul respectiv. In acest caz vom avea o pagina goala pentru ca acest program nu face nimic in acest moment.
Concluzie
In aceasta lectie am invatat care este structura unui program HTML + Java Script unde trebuie scris un programel in Java Script
si cum putem vedea un program HTML + Java Script.
Lectia 2
In aceasta lectie vom invata cum sa definim variabile; sa facem calcule ; sa definim o ramura de tip if-then; sa definim un link si
sa inlocuim o imagine cu alta.
Orice programator stie ca o variabila este o lacatie de memorie si care are denumire si valoare. Astfel atunci cind scriem x=2 in
locatia de memorie care corespunde variabilei x punem valoarea numerica intreaga 2. Un alt exemplu este y=x+4 in acest caz in
locatia de memorie y punem o valoare care este egala cu suma valori aflata in locatia de memorie x plus valoarea 4. Vom defini
in continuare un program in Java Script care ne va arata modul de definire a valorile pentru aceste variabile :
<HTML>
<head>
<title> Acesta este al doilea exemplu de Java Script
</title>
<script language=Java Script>
// urmatoarele linii declara variabile
var secs_per_min = 60;
var mins_per_hour = 60;
var hours_per_day = 24;
var days_per_year = 365;
</script>
</head>
<body>
</body>
</HTML>
Se observa ca pentru a declara o variabila folosim cuvintul <var> dupa care numele variabile (definim de fapt locatia de memorie
care programatorii experimentati stiu ca este locala sau globala) si acesteia la rindul ei ii dam o valoare. De obicei nu este necesar
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 49
3/25/2016
sa dam aceasta valoarevariabilei cum nu este necesar nici sa folosim cuvintul <var>, dar pentru o usURLnta de citire a
programului recomandam folosirea tehnicii cum de altfel recomandam folosirea unor nume de variabile care sa fie sugestive. In
secventa de declarii de variabile putem face si calcule .
<HTML>
<head>
<title>
Calcule odata cu declararea variabilelor
</title>
<script language=Java Script>
var secs_per_min=60;
var mins_per_hour=60;
var hours_per_day=24;
// facem calcule
var secs_per_day=secs_per_min*mins_per_hour*hours_per_day;
</script>
</head>
<body>
</body>
</HTML
Acum ca am definit variabilele si am facut calculele necesare se pune problema cum afisam aceste valori in fisierul HTML si
implicit pe pagina WEB . Pentru a realiza acest lucru va trebui sa folosim comanda document.writeln(nume_variabile) aceasta
comanda va afisa continutul aflat la adresa de memorie numa_variabila pe pagina web.
<html>
<head>
</head>
<body>
<title> Lucru cu variabile
</title>
<script language=Java Script>
var donut_price = 1;
var gas_price = 2;
var miles = ;
var gas_100miles= 10;
var gas_price_total= gas_price * miles*10/100;
var no_donut=100;
var price_donut_total= donut_price* no_donut;
var price=price_donut_total+gas_price_total;
document.writeln(<b>La aceasta calatorie ati cheltuit :);
document.writeln(price </b>);
</script>
</body>
<\html>
Am definit pina acum numai variabile de tip numeric vom incerca in continuare sa definim variablile de tip string. Aceste
variabile sunt definite folosind acolade dupa cum se observa in exemplele de mai jos:
Var var_string = Aceasta este o variabila de tip string;
Confidential
Page 50
3/25/2016
De asemenea noi putem citi valoarea unei variabile de la tastatura folosind urmatoarea sintaxa :
Var var_string1= promt(Introduce-ti stringul dorit :, string1);
Putem de asemenea sa concatenam mai multe stringURL pentru a creea un altul acest lucru se realizeaza in urmatorul mod:
<html>
<head>
<title>
</title>
</head>
<script language= Java Script>
var string1=Aceasta este stringul 1;
var string2=Acesta este stringul 2;
var string3=string1+string2;
document.writeln(string3);
</script>
<body>
</body>
</html>
Sunt mai multe tricURL pe care le putem face cu variabilele de tip string :
Astfel daca declaram o variabila string var st1=String1 este acesta; putem apoi sa declaram o variabila st2 care este
variabila st1 dar care este scrisa folosind italics. Pentru a realiza acest lucru va trebui sa folosim comanda:
Var st2=st1.italics();
Daca vrem sa definim o variabila care are acelasi continut ca si variabila st1 dar care are toate caracterele scrise cu litere mari
atunci o metoda de a defini aceasta variabila este : var st3=st1.toUpperCase(); , pentru a schimba culoarea putem folosi :
Var st4=st1.fontcolor(red); Aceste lucrURL se pot realiza si prin concatenare cum urmeaza :
Var st2=<i>+st1+</i>; sau st4=<font color=red>+st1+</font>;
Exemplu 2. Folosirea comenziilor de lucru cu stringURL in Java Script.
Acum ca am invatat cum sa lucram cu stringURL in Java Script vom incerca sa creem un program care va prelua de la tastarura
nume, prenumele, virsa, sexul si le va afisa in pagina web. Ca si in exemplu anterior ce urmeaza sa facem este sa deschidem un
fisier folosind comanda edit ex2.html si dupa cum ne arata extensia acest fisier este un fisier HTML . In acest fisier vom scrie
codul programului nostru care arata ca-n exemplu de mai jos:
<html>
<head>
<title>
Folosirea variabilelor de tip string intr-un fisier Java Script
</title>
</head>
<body>
<script language=Java Script>
var nume=prompt(Introduceti numele :,);
var prenume=prompt(Introduceti prenumele,);
var virsta=prompt(Introduceti virsta,);
var sex=prompt(Introduceti sexul M/F:,);
alert(Va multumim pentru input .);
document.writeln(A-ti introdus urmatoarele date :);
document.writeln(<br>);
document.writeln(Sunteti );document.writeln(prenume + + nume);
document.writeln(<br>);
document.writeln(Virsta dumneavostra este: );
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 51
3/25/2016
Ramificatii if then
O metoda de ramificare in Java Script este folosirea comenzii if then care ne permite sa verificam o relatii care daca
este adevarata ne va permite sa realizam anumite comenzii daca nu este adevarata se va sari peste aceste comenzii.
Formatul general al comenzii if-then este descrisa mai jos:
if (relatie)
{
comanda1;
comanda2;
comandan;
}
Se observa ca formatul acestei comenzii este identic cu formatul comenzii if din limbajul C. Cit priveste operatorii
logici putem folosi >, <, >=, <=, ==, !=, &&, ||. Daca aveti cunostiinte de C atunci veti observa ca acesti operatori sunt de fapt
operatorii folositi in limbajul C.
var1 > var2 aceasta conditie va fi adevarata daca continutul variabilei var1 va fi mai mare decit continutul variabilei
var2 si va fi falsa daca continutul variabilei var1 va fi mai mic sau egala cu continutul variabilei var2.
var1<var2 aceasta conditie va fi adevarata daca continutul variabilei var1 va fi mai mic decit continutul variabilei var2
si va fi fals daca continutul variabilei var1 va fi mai mare sau egal cu continutul variabilei var2.
var1>=var2 aceasta conditie este adevarata daca continutul variabilei var1 este mai mare sau egala cu continutul
variabilei var2 si va fi falsa daca continutul variabilei var2 va fi mai mica decit continutul variabilei var1
var1<=var2 aceasta conditie este adevarata daca continutul variabilei var1 este mai mic sau egal cu continutul variabilei
var2 si este falsa daca continutul este mai mare
var1!=var2 aceasta conditie este adevarata daca continutul celor doua variabile este diferit si falsa in caz contrar
var1==var2 acesta conditie este adevarata daca continutul variabilei var1 este egal cu continutul variabilei var2 si falsa
in caz contrar
&& este operatorul si ne permite sa compunem conditii
|| este operatorul sau si este folosit pentru a compune conditii
Vom incerca in continuare sa dam un exemplu privind folosirea ramificarii de tip if-then. Sa consideram cazul in care sunteti
intrebat daca sunteti casatorit sau nu si daca sunteti casatorit daca aveti vreun copil.
<html>
<head>
<title>
Folosirea conditiei if-then intr-un fisier Java Script
</title>
</head>
<body>
<script>
var nume=prompt("Introduceti numele :","");
var prenume=prompt("Introduceti prenumele","");
var virsta=prompt("Introduceti virsta","");
var sex=prompt("Introduceti sexul M/F:","");
alert("Va multumim pentru input .");
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 52
3/25/2016
Definirea link-URLlor
Daca mutam cursorul deasupra unui text sau daca apasam un link atunci JavaScript va creea un eveniment. Un
eveniment de tip link este denumit is JavaScript onClick, si ne va trimite in alta pagina care este definita de link-ul
respectiv. Exista o alta obtiune care ne permite sa trimitem utilizatorul in alta pagina WEB atunci cind cursorul se
gaseste deasupra unui link. In acest caz se observa ca nu avem definit limbajul JavaScript si acest lucru este posibil
pentru ca in cazul functiilor onClick tot ce este intre paranteze este considerat limbaj JavaScript.
<a href=# onClick=alert(Ooo, apasa din nou !)>Apasa te rog ! </a>
La prima vedere pare un link obisnuit dar ce face acel onClick in cadru acestei functii . Aceasta instructiune ne spune ca
atunci cind cineva apasa pe acest link se va rula codul sursa aflat intre ghilimele.
Asa cum am aratat anterior exista optiunea care face acelasi lucru dar de data asta atunci cind mouse-ul este deasupra
linkului respectiv.
<a href=# onMouseOver=alert(Hee hee !) > Mouse deasupra !</a>
In continuare vom incerca cele doua comenzi intr-un program html.
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 53
3/25/2016
<html>
<head>
<title>
</title>
</head>
<body>
<a href=# onClick=alert(Apasa din nou !);> Apasa te rog </a>
<br>
<a href=# onMouseOver=alert(Mouse deasupra!!);>Mouse deasupra</a>
</body>
</html>
Dupa cum se stie de la html link-ul este folosit pentru a ne trimite intr-o alta pagina sau la un segment din cadru paginei
curente. In cazul nostru link-ul nu ne trimite nicaieri ci a fost folosit numai pentru a testa comenziile onClick si
onMouseOver.
Confidential
Page 54
3/25/2016
</head>
<body>
<a href=# OnMouseOver=document.image1.src=car2.gif;>
<center>
<img src=car1.gif image1>
</center>
</a>
<br>
</body>
</html>
Se observa ca in acest caz link-ul il constituie figura respectiva. Acest lucru ne permite sa creem meniURL simple.
Manipularea ferestrelor
Se stie ca ferestre pot fi deschise in mediul HTML in felul urmator :
<a href=your_file.html targer=windows1> Va deschide o fereastra</a>
Aceast link va deschide o fereastra care va contine continutul fisierului your_file.html in fereastra windows1.
In JavaScript comanda se asemana :
Window.open(URL,name, features); unde URL este fisierul care urmeaza a fi deschis name este numele ferestrei
in care va deschide acest fisier si features sunt forme pe care le poate avea fereastra pe care acesta o deschide.
Vom da un exemplu de link care este folosit pentru a deschide o fereastra:
<a href=# onClick=windows.open(ex1.html,window1)>Apasa aici te rog</a>
Atunci cind vei apasa pe acest link o noua fereastra se va deschide si va avea continutul fisierului ex1.html.
Deoarece formele features sunt optionale ele pot fi lasate in afara programului.
Von discuta in continuare formele de ferestre html care pot fi deschise folosind aceasta comanda JavaScript.
Acestea sunt:
location deschide o fereastra care are zona in care putem tasta adresa la care vrem sa ajungem
menubar aceasta optiune ne permite sa deschidem o fereastra care are meniu bar
status este o fereastra ajutatoare care apare in partea de jos a ferestrei
scrollbars aceasta comanda ne permite sa afisam un scrollbar atunci cind este necesar
resizable fereastra poate fi modificata
width este latimea ferestrei in pixeli
height este inaltimea ferestei in pixeli
toolbar aceasta va deschide un bar care va contine urmatoarele butoane : Forward, Back, Stop, Home
Vom scrie in continuare un program care sa ne permita sa testam toate aceste forme ale unei ferestre.
<html>
<head>
<title>
Folosirea ferestrelor intr-un fisier de tip HTML
</title>
</head>
<body>
<a href="#" onClick="window.open('ex2.htm','exemplu1');">
Fara features
</a> <br>
<a href="#" onClick="window.open('ex2.htm', 'exemplu1','location')">
Location</a><br>
<a href="#" onClick="window.open('ex2.htm', 'exemplu1','menubar')">
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 55
3/25/2016
Menubar</a><br>
<a href="#" onClick="window.open('ex2.htm','exemplu1','status')">Status</a><br>
<a href="#" onClick="window.open('ex2.htm','exemplu1','scrollbars')">Srollbars</a><br>
<a href="#" onClick="window.open('ex2.htm','exemplu1','resizable')">Resizable</a><br>
<a href="#" onClick="window.open('ex2.htm','exemplu1','toolbar')">ToolBar</a><br>
<a href="#" onClick="window.open('ex2.htm','exemplu1','directories')">Directories</a><br>
<a href="#" onClick="window.open('ex2.htm','exemplu1','width=400, height=400')">Width and
Height</a><br>
<br>
</body>
</html>
Se observa ca aceste forme sunt optionale si atunci cind nu ai ales nici una Pro/ENGINEER le va pune implicit pe toate.
Dupa ce am invatat cum sa deschidem ferestre va fi timpul sa invatam cum sa manipulam aceste ferestre. Dupa cum se
stie JavaScript este un limbaj bazat pe DOM (document object model). Spre exemplu un obiect este window si pentru
acest obiect putem acesa mai multe caracteristici.
var status = window.status;
Aceasta comanda defineste o variabila status care contine continutul aflat in window.status. De asemenea nu numai ca
putem sa le citim dar putem de asemenea sa le modificam spre exemplu : window.status=Acest mesaj a fost
modificat !.
<html>
<head>
<title>
Folosirea ferestrelor intr-un fisier de tip HTML
</title>
</head>
<body>
<script language="JavaScript">
window.status="Alege o optiune din meniu";
</script>
<a href="#" onMouseOver="window.status='Apasa aici pentru meniul1'; return true;">
Am schimbat mesajul</a><br>
<a href="#" onMouseOver="window.status='Apasa aici pentru meniul2'; return true;">
Am schimbat mesajul</a><br>
<br>
</body>
</html>
In exemplu de mai sus am folosit fereastra de informatii pentru ai data utilizatorii informatii despre ce urmeaza a face.
Am folosit direct JavaScript pentru a afisa un mesaj in fereastra de mesaje si apoi am folosit doua lincURL pentr u a
schimba mesajul care apare in fereastra de mesaje.
In continuare vom vedea care sunt operatiile pe care le putem face cu ferestrele folosite. Astfel pentru a putea efectua
operatii cu aceste ferestre va trebui mai intii sa definim o variabila care sa defineasca numele ferestrei. Comanda folosita
in JavaScript este:
var new_window=window.open(hello.html,wind1,width=200,height=200);
Se observa care este structura acestei comenzii este asemanatoare cu structura comenzii window.open cu singura
deosebire ca in acest caz am definit o variabila care este atasata la aceea fereastra.
Cele mai simple operatii pe care le putem face cu astfel de ferestre sunt aducerea in fata sau trimiterea in spate a
ferestrei la care ne referim.
Astfel pentru a duce in spate o fereastra vom folosi comanda:
Confidential
Page 56
3/25/2016
new_window.blur();
Iar pentru a aduce in fata o fereastra comanda este :
new_window.focus();
Vom considera in continuare urmatorul exemplu:
<html>
<head>
<title>
Folosirea ferestrelor intr-un fisier de tip HTML
</title>
</head>
<body>
<script language="JavaScript">
var new_window=window.open("ex1.html","fereastra1","width=200, height=200");
</script>
<a href="#" onMouseOver="new_window.focus();return true;">Afiseaza fereastra</a>
<br>
<a href="#" onMouseOver="new_window.blur();return true;">Ascunde fereastra</a>
</body>
</html>
In acest exemplu vom deschide mai intii o fereastra din limbajul JavaScript si apoi vom manevra aceea fereastra
trimizind-o in fata sau in spate depinzind care este link-ul peste care am pus mouse-ul in acest caz.
Se stie ca in programarea html putem sa definim o structura de ferestre care se numesc frame. Vom prezenta mai jos un
exemplu de astfel de structura:
<frameset row=25%>
<frame src=exemplu1.html name=window1>
<frame src=exemplu2.html name=window2>
</frameset>
Acest exemplu imparte fereastra in doua zone o zona care contine 25% din fereastra si a doua zona care contine restul.
In prima fereastra vom avea continutul fisierului exemplu1.html si in fereastra a doua vom avea continutul fisierului
exemplu2.html.
<FRAMESET>
<FRAME NAME="win1" SRC="ex1.html">
<FRAME NAME="win2" SRC="ex2.html">
</FRAMESET>
Sa consideram cazul de mai sus in care am impartit fereastra principala in doua subferestre numite win1 si win2 si care
contin la rindul lor doua fisiere html.
In fereastra win1(fisierul ex2.html) vom pune doua linkURL can exemplu de mai jos.
<A HREF=primul.html" TARGET="win2">Meniul 1</A>
<A HREF="second.html" TARGET="win2">Meniul 2</A>
In acest caz avem doua meniURL care vor deschide alte fisiere html atunci cind vom apasa pe linkul respectiv si le vor
deschide in fereastra win2 datorita obtiuni TARGET folosita.
Exista mai multe optiuni implicite pentru optiunea TARGET si vom incerca in continuare sa le descriem pe fiecare din
acestea.
Confidential
Page 57
3/25/2016
Confidential
Page 58
3/25/2016
}
</script>
</body>
</html>
Exista functii care ne permit sa creem un document html si sa scriem in interiorul acesteia folosind limbajul JavaScript.
<html>
<head>
<title>
Un document HTML scris in JavaScript
</title>
</head>
<body>
<script language=JavaScript>
var win = window.open("", "win",width=300, height=300);
var win1 = win.document;
win1.open("text/html", "replace");
win1.write("<HTML><HEAD><TITLE>HTML scris in JavaScript</TITLE></HEAD><BODY>Bine
v-am gasit !!!</BODY></HTML>");
win1.close();
</script>
</body>
</html>
Aceasta succesiune de comenzii va nou deschide un document si va scrie cod in acel documeny dupa care il va
inchide si in acelasi timp il va afisa.
Confidential
Page 59
3/25/2016
Daca pentru o anumita pagina toate linkURLle se deschid intr-o anumita fereastra, putem folosi urmatoarea insiruire de
comenzii <base target=windowname> care vor trebui plasate intre <head> si </head>.
Confidential
Page 60
3/25/2016
function lF2()
{
fer2=lF("par.htm","win2", "height=400, width=275","w2")
}
function lF3()
{
fer3=lF("sc1.htm","win3", "height=400, width=275","w3")
}
function lF4()
{
fer1.location.href="sc1.htm"
}
</script>
</head>
<body>
<A HREF="#" onclick="lF1()">...1....</A><br>// va creea win1 si va deschide ex2.htm
<A HREF="#" onclick="lF2()">...2...</A><br>// va creea win2 si va deschide par.htm
<A HREF="#" onclick="lF3()">...3...</A><br>// va creea win3 si va deschide sc1.htm
<A HREF="#" onclick="lF4()">...4...</A><br>// va deschide sc1.htm in win1
</body>
</html>
Confidential
Page 61
3/25/2016
</head>
<body>
<script language=JavaScript>
var parola= George Vasile
var answer=prompt(Va rugam sa introduceti parola,);
if (answer!=parola)
{
answer=prompt(Va rugam sa introduceti parola,);
if (answer!=parola)
{
document.write(Parola incorecta !!);
}else
{
document.write(Parola corecta !!);
}
}else
{
document.write(Parola corecta !!);
}
</script>
</body>
</html>
Acest exemplu foloseste un ciclu if pentru a intreba de parola dar nu intreaba in acest caz numai de doua ori si se pune
problema ce se va intimpla in cazul in care vrem sa intrebam mai mult decit de doua ori, va trebui sa punem mai multe
comenzii de tip if else? Raspunsul este nu pentru ca limbajul JavaScript ne permite sa folosim comenzii de tipul loop
care ne usureaza munca in astfel de cazURL.
Sa consideram cazul de mai sus si sa vedem cum putem rezolva aceeasi problema folosind un ciclu de tip loop.
<html>
<head>
<title>
Exemplu de JavaScript folosind functia loop
</title>
</head>
<body>
<script language=JavaScript>
var parola=acosdpci;
var raspuns;
while(parola!=raspuns)
`
{
answer=prompt(Care este parola :);
}
</script>
</body>
</html>
Sa consideram un alt exemplu in acest caz avem o linie de text si vom fi intrebati sa adaugam citi x vrem la sfirsitul
acelei linii putem raspunde cu un numar intre 1 si 10. Codul sursa pentru acest program in acest caz este :
<html>
<head>
<title>
Adaugam x la capatul unui fisier text
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 62
3/25/2016
</title>
</head>
<body>
<script language=JavaScript>
var width=prompt(Cite x vreti : [1-10] :, 5);
var a_line=;
var loop=0;
while (loop<width)
{
a_line=a_line+x;
loop=loop+1;
}
document.writeln(Ai introdus : );
document.writeln(loop);
</script>
</body>
</html>
Se stie ca in general programatorii sunt lenesi si pentru aceasta ei au creat scurtatURL cum este cea care urmeaza :
a_line=+x; si care este identica cu a_line=a_line+x;
loop++; care este identica cu loop=loop+1;
Comanda for
Ca si in C si in JavaScript avem optiunea for care de se va vedea ca este identica cu cea pe care o avem in C.
for (i=0; i<20;i++)
{
}
Primul termen i=0 defineste punctul de start al ciclului for, cel de-al doilea termen defineste punctul de sfirsit si ultimul
reprezinta modul de modificare a parametrului i. Sa consideram exemplu anterior pe care o sa-l rescriem folosind bucla
for.
<html>
<head>
<title>
Exemplu de bucla for in JavaScript
</title>
</head>
<body>
var lat=prompt(Cite x vreti,5);
var al_line=;
for (i=0; i<lat; i++)
{
al_line=al_line+x;
}
document.writeln(Ai introdus :);
document.writeln(al_line);
</body>
</html>
Sa consideran acum un exemplu in care avem bucla in bucla sau bucla incrutisata .
<html>
<head>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 63
3/25/2016
<title>
Acest exemplu ne arata modul cum poate fi folosita o bucla in bucla
</title>
</head>
<body>
<script language=JavaScript>
var lat=prompt(Introduceti latimea:,5);
var lung=prompt(Introduceti lungimea,5);
var a_line=;
for (i=0;i<lat;i++)
{
document.writeln(<br>);
for(j=0;j<lung;j++)
{
a_line=a_line+x;
a_line=a_line+ ;
}
document.writeln(a_line);
a_line=;
}
</script>
</body>
</html>
Exemplu de mai sus nu face decit sa creeze un caroiaj creat din x si spatii goale ca in exemplu de mai jos:
/123456789
1xxxxxxxxx
2xxxxxxxxx
3xxxxxxxxx
4xxxxxxxxx
5xxxxxxxxx
6xxxxxxxxx
7xxxxxxxxx
8xxxxxxxxx
care a fost creat folosind o latime egala cu 9 si o lungime egala cu 8.
Vectorii in JavaScript
Folosirea vectorilor ne permit sa creem lucrURL mai usor spre exemplu putem sa definim o bucle dupa elementele unui
vector si apoi sa facem ceva cu acestea. Un exemplu il constituie realizarea unui show de slidURL. Pentru a realiza acest
lucru vom defini un array care sa contina paginile pe care vrem sa le afisam si apoi vom folosi o bucla pentru a le afisa.
<html>
<head>
<title>
Exemplu de show folosind array
</title>
</head>
<body>
<script language=JavaScript>
Confidential
Page 64
3/25/2016
var url_names=new
Array(slide1.html,slide2.html,slide3.html,slide4.html,slide5.html);
var a_url;
for (loop=0;loop<url_names.length;loop++)
{
a_url=http://www.+url_names[loop]+/;
var new_window=open(a_url,new_window, width=300, height=300);
alert(hit ok for next site);
}
</script>
</body>
</html>
Intrucit nu avem fisiere html create in acest moment vom considera un exemplu mai simplu pentru a demonstra folosirea
functiei array.
<html>
<head>
<title>
Folosirea functiei array pentru cazul a mai multor culorii
</title>
</head>
<body>
<script language=JavaScript>
var colors=new Array(red,blue,purple,green);
for (i=0;i<colors.length;i++)
{
var element=colors[i];
document.writeln(element);
document.writeln(<br>);
}
</script>
</body>
</html>
Confidential
Page 65
3/25/2016
{
document.images[loop].src=spacer.gif;
}
Un array 2D este creat la fel de simplu ca si un array normal. In acest caz vom declara un array pesta altele folosite
drept sisteme. Nu trebuie sa iti fie teama este foarte simplu.
Dupa cum se vede, trebuie sa declaram un array pentru fiecare subarray in parte. Modul cum translatam aceasta idee
este foarte simplu:
var myarray=new Array(3)
for (i=0; i <3; i++)
myarray[i]=new Array(3)
Este simplu sau nu ? Este si si acest caz cheia folosiri acestui array este functia loop. Utilizind comanda loop, noi am
incrementat prin intreg vectorul original declarind un nou vector la fiecare stop.
Pentru a accesa valorile care sunt tinute de catre array va trebui numai sa folosim paranteze drepte:
myarray[0][0]="Compaq 486"
myarray[0][1]="Compaq 586"
myarray[0][2]="Compaq 686"
myarray[1][0]="Dell 486"
myarray[1][1]="Dell 586"
myarray[1][2]="Dell 686"
myarray[2][0]="IBM 486"
myarray[2][1]="IBM 586"
myarray[2][2]="IBM 686"
Confidential
Page 66
3/25/2016
The trickest part of a two dimensional array may be keeping track of all the storage compartments in the array!
Partea cea mai complicata intr-un array de doua dimensiuni este sa pastram urma tuturor compartamentelor intr-un
array.
Un array 3x3 are 9 compartimente , sa creem in continuare un array 2D care are 15 compartimente.
var myarray=new Array(3)
for (i=0; i <3; i++)
myarray[i]=new Array(5)
Daca stii cum sa folosesti comanda for atunci poti sa creezi vectori cu cite compartimente vrei .
Un array 2D are o structura care contine un arbore de subvariabile care exista intr-o variabila principala:
In acest caz varfiabila principala este Compaq care contine in interior alte subvariabile (486,586). Va trebui sa
folosesti un array 2D numai cind esti intr-o situatie similara cu ceea de mai sus, unde gruparea unei variabile principale
este neceasra.
Sa vedem cum putem considera un exemplu de un vector 2D. In acest exemplu vom creea un banner simplu care se
roteste,
Iar unul din aceste bannere este afisat aleator cind pagina se va incarca:
<script>
var myarray=new Array(3)
for (i=0; i<3; i++)
myarray[i]=new Array(2)
myarray[0][0]="<a href='firstbanner.htm'><img src='firstbanner.gif'></a>"
myarray[0][1]="<a href='firstbanner.htm'>Click here for our sponsor!</a>"
myarray[1][0]="<a href='secondbanner.htm'><img src='secondbanner.gif'></a>"
myarray[1][1]="<a href='secondbanner.htm'>Click here for our sponsor!</a>"
myarray[2][0]="<a href='thirdbanner.htm'><img src='thirdbanner.gif'></a>"
myarray[2][1]="<a href='thirdbanner.htm'>Click here for our sponsor!</a>"
var whichbanner=Math.round(2*Math.random())
document.write(myarray[whichbanner][0]+"<br>")
document.write(myarray[whichbanner][1]+"<br>")
</script>
Noi folosim un array 2D (3x2) pentru a stora 3 bannere, deoarece o imagine si un text link este necesar pentru fiecare
banner.
Variabila whichbanner, care contine un numar aleator intre 0 si 2 determina care banner este incarcat. Apoi vom folosi
comanda document.write() pentru a scrie dinamic codul pentru banner.
Functii
Functiile sunt rutine scrise in java script care ne permit sa folosim anumite linii de cod fara a mai fi nevoie in viitor sa
scriem acele linii de cod.
Sa consideram cazul afisarii timpului folosind JavaScript:
<a href=# onClick=
var the_date = new Date();
var the_hour = the_date.getHours();
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 67
3/25/2016
Functii cu parametrii
Pina acum am folosit functii fara parametrii care nu pot duce la reducerea timpului pentru a tasta si de aceea este mult
mai eficient sa se defineasca functii cu parametrii functii care pot returna valori odata ce au fost apelate.
Vom folosi un exemplu simplu de functie care apeleaza parametrii si returneaza valoare.
<head>
<script language="javascript">
<!-- hide script from old browsers
function rid_la_patrat(no) {
return no * no
}
// end script hiding from old browsers -->
</script>
</head>
<body>
<script>
document.write("5 la puterea a doua =", rid_la_patrat(5), ".")
Confidential
Page 68
3/25/2016
</script>
<br>
</body>
In cazul primei functii de cite ori aceasta functie este apelata va afisa o mesaja de dialog si va spune buna pe cind in alt
caz aceasta functie va afisea o fereastra de dialog care va contine inputul functiei.
Confidential
Page 69
3/25/2016
Exemple
Sa definim mai jos citeva exemple de functii robuste:
Exemplu 1
Primul exemplu este un exemplu de sumare, unde o functie adauga toate numerele care I-au fost date drept argumente:
function adunare(){
for (i=0;i<adunare.arguments.length;i++){
total+=adunare.arguments[i]; // aici este bine sa se evite formularea total=total+adunare.arguments[i] care
// va transforma caracterul total in parametru string .
}
Confidential
Page 70
3/25/2016
Confidential
Page 71
3/25/2016
<head>
<script>
preloadimages("firstimage.gif","secondimage.gif",
"thirdimage.gif")
</script>
</head>
Codulaplicatieieste:
<html>
<head>
<title>Incarcareaimaginilorinmemorie</title>
<scriptlanguage="JavaScript">
varmyimages=newArray()
functionpreloadimages()
{
for(i=0;i<preloadimages.arguments.length;i++)
{
myimages[i]=newImage();
myimages[i].src=preloadimages.arguments[i];
}
}
</script>
<script>
preloadimages("but1_on.gif","but2_on.gif","but3_on.gif");
document.writeln(myimages[0].src);document.writeln("<br>");
document.writeln(myimages[1].src);document.writeln("<br>");
document.writeln(myimages[2].src);
</script>
</head>
<body>
</body>
</html>
Introducere in Forme
Pentru a intelege mai bine care este rolul acestor forme si cum le putem aplica va trebui sa discutam aceste forme in
formatul HTML . Vom trece mai intii in revista toate functiile care exista in formatul html pentru creerea unei forme si
apoi vom discuta modul de creere in java.
Functiile folosite in limbajul HTML pentru creerea unei forme sunt:
Definire form
<FORM ACTION="URL" METHOD=GET|POST></FORM>
ncrcare fisier
<FORM ENCTYPE="multipart/form-data"></FORM>
Cmp input
<INPUT TYPE="TEXT|PASSWORD|CHECKBOX|RADIO| IMAGE|HIDDEN|SUBMIT|RESET">
Nume cmp
<INPUT NAME="***">
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 72
3/25/2016
Valoare cmp
<INPUT VALUE="***">
Apsat?
<INPUT CHECKED>
(checkbox si radio)
Dimensiune cmp
<INPUT SIZE=?>
(n caractere)
Dimensiune maxim
<INPUT MAXLENGTH=?> (n caractere)
List de selectie
<SELECT></SELECT>
Nume list
<SELECT NAME="***"></SELECT>
Numr de optiuni
<SELECT SIZE=?></SELECT>
Optiuni multiple
<SELECT MULTIPLE> (se pot selecta mai multe optiuni)
Optiune
<OPTION> (elemente ce pot fi selectate)
Optiune implicit
<OPTION SELECTED>
Dimensiune fereastr input text
<TEXTAREA ROWS=? COLS=?></TEXTAREA>
Nume fereastr
<TEXTAREA NAME="***"></TEXTAREA>
Spatiere text
<TEXTAREA WRAP=OFF|VIRTUAL|PHYSICAL></TEXTAREA>
Deci dupa cum toata lumea stie formele sunt folosite pentru a permite interatii in pagina ta web. Aici utilizatorul poate
introduce informatii care apoi sunt introduse si procesate de un script. De obicei o forma incepe cu :
<FORM ACTION= METHOD=> si se termina cu </FORM>.
Comenziile de introducere a astfel de date sunt : <INPUT NAME=name SIZE=####> unde name este numele variabilei
care va prelua acest input, iarb size ne va da care este marimea cimpului pentru aceea variabila.
Aceasta comanda ne permite sa introducem text, deci un string avind numarul de caractere egal cu marimea data de
parametrul size.
Un alt tip de parametru il constituie area care ne permite sa introducem text, aceasta arie poate fi definita folosind
rindURL si coloane. Formatul folosit pentru o astfel de comanda este :
<TEXTAREA NAME=name ROWS=### COLS=###> si se termina cu formatul </TEXTAREA>
Tot ce a fost introdus va apare in parametru name si el va avea o lungime data de numarul de coloane si numarul de
rindURL.
Formatul general pentru introducerea datelor este:
<INPUT NAME=name TYPE=type VALUE=value> se observa ca ce apare in acest caz este type care ne permite sa
definim tipul de butoane pe care vrem sa-l folosim si poate fi : radio sau checkbox pentru introducerea datelor si summit
si reset pentru trimiterea intregii forme sau pentru resetarea valorilor acestei forme.
Un exemplu folosirea formei summit este un buton care ne permite sa trimitem utilizatorul in alta pagina si codul sursa
este:
<FORM ACTION="ex1.htm">
<INPUT TYPE="submit" VALUE="Go Back">
</FORM>
Aceasta forma va creea un button pe post de link.
Confidential
Page 73
3/25/2016
Acum sa discutam folosirea acestor forme intr-un fisier JavaScript, la fel ca si incazul links[] exista un vector forms[]
care lucreaza in acelasi mod. Astfel prima forma de pe pagina va fi referita folosind document.forms[0] si in plus avem
un vector elements[] care este corespunzator fiecarei forme. Am vazut ca forma generala pentru o forma este:
<FORM NAME=form1>
<INPUT SIZE=20 NAME=input1>
</FORM>
Pentru a ne referi la cimpul respectiv putem folosi structura : document.form1.input1 acest lucru este posibil pentru ca
am folosit nume pentru forma si pentru input. Pentru celalalte tipURL de input exista de asemenea valori pentru anumiti
parametrii astfel pentru text blanks si text areas exista parametru value pentru radio buttons si checkboxes exista
parametru checked.
Aceasta functie este apelata apoi intr-un fisier HTML:
<html>
<head>
<title>
Folosirea limbajului JavaScript cu forme
</title>
<script language="JavaScript">
function cl()
{
alert("Sunteti in fuctie"+"\nSi a-ti introdus:"+
"\nText="+document.form1.text1.value+"\n"+
"Radio 1="+document.form1.radio1.checked +"\n"+
"Radio 2="+document.form1.radio2.checked+"\n"+
"Check ="+document.form1.check1.checked);
}
</script>
</head>
<body>
<form name="form1">
Text: <input name="text1" size=40><br>
Radio 1: <input type="radio" name="radio1"><br>
Radio 2: <input type="radio" name="radio2"><br>
Checkbox : <input type="checkbox" name="check1"><br>
<input type="button" value="checked" onClick="cl()">
<br>
</form>
</body>
</html>
Sa consideram un exemplu asemantor cu cel anterior numai ca in acest caz vom alte doua functii:
Setf() si clearf(). Setf() va setaparametrii intiali pentru o anumita forma si clearf() va sterge parametrii unei anumite
forme.
Codul html pentru aceast fisier html este:
<html>
<head>
<title>
Folosirea limbajului JavaScript cu forme
</title>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 74
3/25/2016
<script language="JavaScript">
function cl()
{
alert("Sunteti in fuctie"+"\nSi a-ti introdus:"+
"\nText="+document.form1.text1.value+
"\nText="+document.form1.text2.value+"\n"+
"Radio 1="+document.form1.radio1.checked +"\n"+
"Radio 2="+document.form1.radio2.checked+"\n"+
"Check ="+document.form1.check1.checked);
}
function setf()
{
document.form1.text1.value="Numele d-voastra";
document.form1.text2.value="Prenumele d-voastra";
document.form1.radio1.checked=1;
document.form1.radio2.checked=0;
document.form1.check.checked=1;
}
function clearf()
{
document.form1.text1.value="";
document.form1.text2.value="";
document.form1.radio1.checked=0;
document.form1.radio2.checked=0;
document.form1.check.checked=0;
}
</script>
</head>
<body>
<form name="form1">
Nume: <input name="text1" size=40><br>
Prenume:<input name="text2" size=40><br>
Masculin: <input type="radio" name="radio1"> Feminin: <input type="radio" name="radio2"><br>
Aveti 18 ani : <input type="checkbox" name="check1"><br>
<input type="button" value="Set" onClick="setf()">
<input type="button" value="Clear" onClick="clearf()">
<input type="button" value="Send" onClick="cl()">
<br>
</form>
</body>
</html>
Vom considera in continuare un exemplu in care vom creea o forma folosind JavaScript pentru a realiza un link la o
anumita pagina.
<html>
<head>
<title>
Folosirea formelor pentru a genera un link
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 75
3/25/2016
</title>
<script language=JavaScript>
function show_link()
{
document.link_form.link_val.value=document.links[0].href;
}
function set_link()
{
document.links[0].href=document.link_form.link_val.value;
}
</script>
</head>
<body>
<form name=link_form>
<a href=http://www.netscape.com onMouseOver=windows.status=variable Link; return true; >Variable
Link</a>
<input type=button value=Show onClick=show_link();><p>
<input name=link_val size=60>
<input type=button value=Set onClick=set_link();>
</form>
</body>
</html>
In cazul de mai sus am definit o forma care are un link in interiorul ei si apoi am definit doua butoane unul numit show
si unul numit set. Intre ele exista o variabila de tip text link_val care va pastra valoarea introdusa pentru link si de
asemenea va seta aceasta valoare cind va fi necesar.
Pentru butonul Show vom citi variabila document. links[0].href care contine valoare pentru primul link si apoi va fi
stocata li variabila document.link_form.link_val.value care este un cimp de tip text. Buttonul Set va lucra in alt mod va
citi variabila document.link_form.link_val.value si o va seta in variabila document.links[0].href care este primul link de
pe pagina . Astfel se va putea folosi aceasta valoare ca input pentru link-ul respectiv.
Vom analiza in urmatorul exemplu folosirea comenzii <textare name=text1 rows=10 cols=60> unde vom scrie un text
care apoi va fi schimbat folosind doua linkURL aflate sub acel text.
<html>
<Head>
<title>
Exemplu folosind un cimp de text cu mai multe rindURL si coloane
</title>
</head>
<body>
<form name="form_2">
<textarea name="text1" rows=10 cols=35>
Ion avea o palarie
Intinsa-asa ca o tipsie
Si apierdut-o (nu stiu cum);
Marin ar fi gasit-o in drum
Si-a pus-o, deci, pe cap, Marin
Si-a pornit la drum senin."
</textarea>
</form>
<a href="#" onMouseOver="document.form_2.text1.value='Ion avea o palarie'+
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 76
3/25/2016
'\nIntinsa-asa ca o tipsie'+
'\nSi apierdut-o (nu stiu cum)'+
'\nMarin ar fi gasit-o in drum'+
'\nSi-a pus-o, deci, pe cap, Marin'+
'\nSi-a pornit la drum senin.';"
>Prima parte</a><br>
<a href="#"
onMouseOver="document.form_2.text1.value= '\nAcum, sa vezi ce ghinion:'+
'\nMarin se creda-a fi Ion'+
'\nIon are si el un spin;'+
'\nCa e Marin sau nu-I Marin.'
;">A doua parte</a>
</body>
</html>
Urmatorul exemplu il constituie un exemplu de calculator pe o linie . In acest caz avem un cimp in care putem sa scriem
relatia pe care vrem sa o evaluam urmata de un buton care ne permite sa efectuam calculele si care va apela functia din
JavaScript care ne permite sa evaluam expresia respectiva. Apoi vom avea un cimp de tip text care la rindul lui va afisa
continutul pe care il vom gasi dupa ce vom evalua expresia din exemplu anterior. Pentru a evalua aceasta expresie se
foloseste functia eval() care va evalua valoarea introdusa in primul cimp si apoi va afisa rezultatul acestei evaluari.
Sa consideram in continuare codul sursa pentru aceast program html.
<html>
<head>
<title>
Exemplu de calculator
</title>
</head>
<script language=JavaScript>
function calculeaza()
{
document.calculator.rezultat.value=eval(document.calculator.expresie.value);
}
</script>
<body>
<form name=calculator>
<input name=expresie size=20>
<input type=button value== onClick=calculeaza();>
<input name=rezultat size=10>
</form>
</body>
</html>
Am tot folosit in exemplele de mai sus cimpURL de tip text, este timpul sa discutam despre evenimentele care pot sa
para atunci cind avem un cimp de tip text. Avem trei astfel de evenimente: onBlur, onFocus si onChange.
OnFocus = este evenimentul care apare cind cineva apasa in interiorul unui text;
OnBlur = este evenimentul care apare cind cineva se muta in afara cimpului text;
OnChange= este evenimentul care apare cind cineva a modificat cimpul text;
Sa incercam sa facem un exemplu privind aceste evenimente:
<html>
<head>
<title>
Exemplu de text care se schimba
</title>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 77
3/25/2016
<script language=JavaScript>
function writeIt(the_word)
{
var the_word_with_return=the_word+\n;
window.document.form1.first_text.value=word_with_return;
}
</script>
</head>
<body>
<form namr=form1>
<input type=text name=first_text onFocus=writeIt(focus); onBlur=writeIt(blur);
onChange=writeIt(change);>
</form>
</body>
</html>
Ce este nou cu acest exemplu este faptul ca apelarea cimpului in forma poate fi facut cu ajutorul DOM (document object
model). Astfel daca vrem sa schimbam un cimp input intr-o procedura JavaScript procedura pentru a realiza acest lucru
este:
window.document.nume_forme.nume_cimp.value.
Trimiterea formelor
Dupa poate deja stiti formele sunt obiecte, ele au propriile lor metode, propietatii si evenimente. Un eveniment pe care
ar trebui sa-l stii inca din html este onSubmit. Acest eveniment poate apare in doua situatii cind userul apasa pe butonul
enter sau cind userul apasa pe butonul de sumitere.
De obcei daca apasam pe un buton submit care nu a fost programat sa faca ceva poate duce la reincarcarea paginii intrun editor cum ar fi Netscape. De aceea este bine sa punem forma sa returneze true sau false.
<html>
<head>
<title>
Buton pentru submit
</title>
</head>
<body>
<form onSubmit=return false;>
<input type=submit value=Submit>
</form>
</body>
</html>
Aceasta comanda return false este o buna comanda pentru a oprii browserul pentru a face ceea ce face de obicei. Se
poate folosi nu numai pentru form dar si pentru link-URL.
Spre exemplu urmatorul link:
<a href=# onClick=return false>Link-ul 1</a> Deoarece acest link returneaza false cind este apasat el nu face nimic
in document. Sa consideram de data aceasta un alt tip de input si anume choose_category. Pentru a intelege o astfel de
categorie
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 78
3/25/2016
Confidential
Page 79
3/25/2016
So, how exactly does one access a radio or checkbox in JavaScript? Well, like you would with any other form elementthrough its name. Whether it is a radio or a check box makes no difference to JavaScript. The below defines a radio
button with the name "test", and uses JavaScript to access it:
<form name="example">
<input type="radio" name="test">
</form>
<script>
//accesses the button called "test"
document.example.test
</script>
Changing the state of a box
Accessing a box (radio or check) by itself is useless if we can't go on to manipulate the state of it. The state of a box can
be of two things- "on" when its selected, and "off", when its not. This state is represented in JavaScript by a boolean
property called "checked":
property
checked
function
Contains a boolean value indicating whether a box is selected or not. Writable.
Using this property, we can not only determine the state of a box, but change it as well, by assigning either a value of
"true" or "false" to it.
//alerts whether a box is checked
alert(document.example.test.checked)
//Dynamically selects a box
document.example.test.checked=true
Now that we know how to access and manipulate a single box, lets expand our workarea to cover an entire group of
boxes.
Grouping multiple boxes together
We rarely see only one radio or checkbox by itself in a form. The nature of them requires that they exist as a group:
By now, we know that the default way to access any one box is through its name. Having said that, imagine having a
group of 50 radio buttons. Accessing them would require us to give each and every button an unique name. Furthermore,
in a scenerio where we need to apply a loop through all of the radio buttons, it will mean manually writing out 50 lines
of code to access and reach every of the 50 buttons. Hardly even an acceptable thought.
So you say to yourself, like you often do as you gaze towards the sky: "There must be something better out there". Well,
I hate to break it to you, but there isn't- in life, that is. In JavaScript, however, there is. There is a technque that will
allow us to easily and efficiently access a radio or check box in a group. The key is to give each box the same exact
name. By doing so, JavaScript creates an array out of the boxes with this same name, and allows us to access the
individual boxes as an array element. Lets demonstrate this concept with a form that contains 10 check boxes:
<form name="example">
<input type="checkbox" name="myboxes"><br>
<input type="checkbox" name="myboxes"><br>
<input type="checkbox" name="myboxes"><br>
<input type="checkbox" name="myboxes"><br>
<input type="checkbox" name="myboxes"><br>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 80
3/25/2016
Confidential
Page 81
3/25/2016
Confidential
Page 82
3/25/2016
Freddie.style.color=blue;
Confidential
Page 83
3/25/2016
Functiile IndexOf si LastIndexOf ne vor returna primul caracter dintr-un substring al unui string dat. Diferenta dintre
cele doua metode este ca indexOf cauta substringul de la inceputul stringului pe cind lastindexOf cauta substringul
incepind de la capatul stringului dat.
Sa consideram urmatorul exemplu:
Var title =Oh bla dee oh bla da
Var newstring=title.indexOf(bla);
Newstring3
Var newstring2=title.lastIndexOf(bla);
Newstring214
Daca nu a fost gasit acest substring in stringul respectiv atunci va fi returnata valoarea 1. In asa fel putem sa veficam
aceasta valoare pentru a fi sigURL ca un string este in interiorul altuia.
If (title.indexOf(duh)==-1) alert(String not found !);
Confidential
Page 84
3/25/2016
Mystring.length si charAt().
Vom prezenta in continuare un cod html in care folosim mai multe functii care ne permit operatii cu functiile string:
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
<!-function replaceStr(origStr, deleteStr, replaceStr) {
var left = getStrLeft(origStr, deleteStr);
var right = getStrRight(origStr,deleteStr);
var newstring = left + replaceStr + right;
if (newstring != replaceStr)
document.all.newbox.value = newstring;
else
document.all.newbox.value = origStr;
}
function deleteStr (origStr, deleteStr) {
var left = getStrLeft(origStr, deleteStr);
var right = getStrRight(origStr,deleteStr);
var newstring = (left + right);
if (newstring != "")
document.all.newbox.value = newstring;
else
document.all.newbox.value = origStr;
}
function getStrLeft(origStr, findStr) {
var position = origStr.indexOf(findStr);
if (position == -1)
return "";
else
return (origStr.substring(0, position));
}
function getStrRight(origStr, findStr) {
var position = origStr.indexOf(findStr);
if (position == -1)
return "";
else
return (origStr.substring(position +
findStr.length,origStr.length));
}
//-->
</SCRIPT>
</HEAD>
<BODY >
<LABEL for = "origbox"> Original string: </LABEL>
<BR>
<INPUT type = "text" id = "origbox" style =
"width:400">
<BR>
<BR>
<LABEL for = "deletebox"> Delete: </label>
<INPUT type = "text" ID = "deletebox" >
<LABEL for = "replacebox"> Replace: </LABEL>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 85
3/25/2016
Confidential
Page 86
3/25/2016
Confidential
Page 87
3/25/2016
Confidential
Page 88
3/25/2016
<html>
<head>
</head>
<body onLoad=alert(Hello)
alert(How are you ?)>
</body>
</html>
Aceste functii sunt independente la caracterele folosite. Spre exemplu ONLOAD,onLoad si onload fac acelasi lucru in
interiorul unui cod HTML. Este bine stiut ca pentru a delimita un cod JavaScript in interiorul unui cod HTML se vor
folosi ghilimelele iar in interiorul ghilimelelor duble se vor folosi ghilimelele simple. Datorita acestui lucru este bine de
cele mai multe ori sa se defineasca o functie si aceasta functie sa fie chemata de catre evenimentul din cadru codului
html.
Vom prezenta mai jos un astfel de exemplu:
<html>
<head>
<title>Hello</title>
<script language=JavaScript>
function welcome()
{
alert(Hello);
}
</script>
</head>
<body onLoad=welcome()>
</body>
</html>
Un alt evenimet care poate apare este onClick() care poate controla apasarea butoanelor de catre utilizator . Vom da in
continuare un exemplu:
<script language=JavaScript>
function clicked()
{
alert(You clicked a button.);
}
</script>
<form>
<input type=button value=click here onClick=clicked()>
</form>
Confidential
Page 89
3/25/2016
In acest caz a fost asignata functia welcome la incarcarea fisierului. Se observa ca in acest caz evenimentul trebuie scris
folosind caractere mici cum ar fi onload in loc onLoad. In versiunea 4.0x acest lucru nu mai este cerut dar el este cerut
de versiunea 3.x pentru Netscape. De aceea evenimentele scrise cu litera mica sunt compatibile in versiunile mai mici.
Sa consideram un exemplu prezentat anterior drept referinta:
<html>
<head>
<title>Hello</title>
<script language=JavaScript>
function welcome()
{
alert(Hello);
}
</script>
</head>
<body onLoad=welcome()>
</body>
</html>
Vom prezenta in continuare acelasi script dar scris acum in JavaScript 1.1.
<html>
<head>
<title>Hello</title>
<script language=JavaScript>
function welcome()
{
alert(Hello);
}
window.onload=welcome;
</script>
</head>
<body>
</body>
</html>
Sa consideram de asemenea exemplu cu butonul descris anterior:
<script language=JavaScript>
<!
function clicked()
{
alert(You clicked a button.)
}
//
</script>
<form name=myform>
<input type=button value=click here name=mybutton onClick=clicked()>
</form>
Echivalentul tepretic in JavaScript 1.1 pentru acest script este:
<html>
<head>
<script language=JavaScript>
<!
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 90
3/25/2016
function clicked()
{
alert(You clicked a button);
}
//
</script>
</head>
<body>
<form name=myform>
<input type=button value=click here name=mybutton>
</form
<script language=JavaScript>
document.myForm.mybutrton.onclick=clicked;
</script>
</body>
</html>
Aici trebuie sa fim atenti deoarece numai functia onLoad o putem apela inainte de a defini obiectul pentru ca este
incarcata inainte de a fi incarcat obiectul respectiv, dar in cazul unui button nu este corect deoarece apelam un obiect
care nici nu a fost creat.
Vom prezenta in continuare o lista a obiectelor si a evenimentelor care sunt suportate de acestea:
Object
Window
Link
Area*
Image*
Form
Text
textarea
password
Button
reset
submit
radio
checkbox
onclick
Select
onblur
onchange
onfocus
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 91
3/25/2016
FileUpload
onblur*
onfocus*
onselect*
Ce este cu steluta este suportate de Netscape numai in versiunea 1.1 si nu in versiunea 1.0 .
Capturarea evenimentelor
Netscape 4.0x ne permite sa folosim o noua metoda de captare a evenimentelor. In versiunile vechi exista un singur mod
si anume avem funtii in html si JavaScript. In versiunea 4.0x tu poti sa captezi evenimentele in obiecte cum ar fi
ferestre, layere sau documente inainte ca venimentul sa-si atinca tinta. Spre exemplu poate veti dori ca obiectele
document sa preia evenimentele mouseover (trebuie sa ne aducem aminte ca mouseover este in eveniment, pe cind
onmouseover este o functie care preia evenimente) nu conteaza unde apar in document.
JavaScript functii referitoare la evenimente te lasa acum sa capturezi si sa preiei evenimente inainte ca acestea sa isi
atinga tinta. Implicit toate evenimentele sunt capturate de tinta lor implicit. Spre exemplu daca utilizatorii apasa un
buton atunci evenimentul este capturat ede functia onClick .Va trebui explicit sa permiti aceasta capabilitate pentru
obiecte cum ar fi window, layer si document. Aceasta capabilitate poate fi scoasa in orice moment. Pentru a realiza acest
tasc se vor folosi urmatoarele metode:
Window.captureEvents()
Layer.captureEvents()
Document.captureEvents()
Window.releaseEvents()
Layer.releaseEvents()
Documenr.releaseEvents()
Spre exemplu daca vrei ca un document sa capturezwe evenimentele in orice moment cind documentul este incarcat, va
trebui sa rulezi functia window.captureEvents() cind pagina este incarcata. CaptureEvents() and releaseEvents() necesita
un argument care sa specifice ce tip de document avem.
Window.captureEvents(Event.click);
Window.captureEvents(Event.click);
Window.captureEvents(Event.mousedown);
Window.releaseEvent(Event.mousedown);
Window.captureEvents(Event.mouseup);
Window.releaseEvents(Event.mouseup);
Window.captureEvents(Event.mousedown | Event.mouseup)
Window.releaseEvents(Event.mousedown | Event.mouseup )
Se observa ca evenimentul si nu functia care captureaza evenimentul este scris cu litere mari. Astfel Event.click este
valoarea evenimentului click pe cind Event.keypress este valoarea returnata de functia keypress.
Se stie de asemenea ca pot fi realizate mai multe evenimente in acelasi timp. Acest lucru se poate realiza daca se va
folosi separatorul | pipe. Sa consideram urmatorul script:
Window.captureEvents(Event.click | Event.mousedown | Event.mouseup);
Window.captureEvents(Event.click);
Window.captureEvents(Event.mousedown);
Window.captureEvents(Event.mouseup);
Confidential
Page 92
3/25/2016
Confidential
Page 93
3/25/2016
Confidential
Page 94
3/25/2016
Chiar daca tu apesi pe link objectul window si anume functia onclick va captura acest eveniment . Evenimentele sunt
duse in jos in ierarhie de la nivelul mare la nivelul de jos.
De asemenea numai primul eveniment pe pagina va captura acest eveniment. Spre exemplu in scriptul care urmeaza
nici unul dintre link-URL vor fi cancelate si atunci cind vei apasa pe pagina vor fi transferate la o noua pagina:
<a href=http://www.netscape.com/>Netscape</a><br>
<a href=http://www.microsoft.com>Microsoft</a>
<script language=JavaScript>
function processClick(e)
{
document.links[0].handleEvent(e);
}
function firstLink(e)
{
return false;
}
window.captureEvents(Event.CLICK);
window.onclick = processClicks;
document.links[0].onclick = firstLink;
</script>
Propagarea evenimentelor
Daca este chemata o functie routeEvent() functie care se gaseste in interiorul unei functii ce evalueaza un eveniment .
Daca alt obiect (document sau layer) incearca sa captureze un eveniment, atunci o functie de procesare a evenimentului
va apare.
Functia routeEvent() returneaza valoarea returnata de urmatorul captor de evenimente care capteaza evenimentul
respectiv daca exista. Daca nu exista nici un captor de evenimente in ierarhie atunci returneaza false sau underfined,
null.
Un eveniment cade jos catre tinta pe care urmeaza sa o genereze. Nu preia functii generatoare de evenimente care nu se
gasesc in calea ei. Spre exemplu daca apesi pe un link si acest link apeleaza functia routeEvent() functie care se gaseste
in interiorul obiectului fereastra si aici nu gaseste nici o functie generatoare de evenimente atunci o sa treaca la obiectele
de tip document . Daca la rindul acestora obiectele de tip document nu au functii care sa genereze evenimente spre
exemplu document.onclick atunci se va captura link-ul insusi. Daca acest link nu are nici o functie care preia evenimente
atunci functia routeEvent() va returna false si evenimentul se va evapora.
In cadru unui call al functiei routeEvent() pentru un evenimet care trebuie sa afiseze o noua pagina, actiunea are loc fara
a returna capturarea obiectului.
Sa consideram urmatoarele documente:
main.html
Acest fisier va contine urmatorul cod :
<html>
<head>
<title>Main Document #1</title>
<script language=JavaScript>
function mainProcessLinks(e)
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 95
3/25/2016
{
alert(The event was captured in the main document.)
}
document.captureEvents(Event.click);
document.onclick=mainProcessLinks;
</script>
</head>
<body>
<ILAYER name=sub src=sub1.html><ILAYER>
<form>
<input type=button name=mainButton Value=main Button onclick=alert(this.name)>
</form>
</body>
</html>
sub1.html
<html>
<head>
<title>Layer Document #1</title>
<script language=JavaScript>
function layerProcessLinks(e)
{
alert(The event was captured in layer document.)
}
document.captureEvents(Event.CLICK);
document.onclick=layerProcessLink;
</head>
<body>
<form>
<input type=button name=layerButton value=layer button onclick=alert(this.name)>
</form>
</body>
</html>
Exercitii:
In continuare vom analiza si vom folosi pentru training mai multe exemple de programele care va pot fi folositoare:
Exemplu 1
=======
<script language ="JavaScript">
function nu_apasa_tasta()
{
alert('Tastatura a fost inhibata);
}
document.onkeydown=nu_apasa_tasta;
</script>
Confidential
Page 96
3/25/2016
Acest script defineste o functie nu_apasa_taste() care este apelata de cite ori o tasta este folosita. Functia cea mai importanta este
Document.onkeydown care este apelata de cite ori o tasta a fost apasata si care in cazul de fata afiseaza un mesaj care ne spune ca nu
putem folosi tastatura.
Exemplu 2
========
Mai jos este un alt script care de data asta asteapta o perioada de timp pentru a face saltul de la pagina curenta la o noua pagina. Este
folositor in momentul in care dorim sa ne mutam site-ul si pentru o perioada de timp trebuie sa realiza transferul de la o pagina la alta.
<script language="JavaScript">
var noua_pagina="http://www.ecadro.com"
document.write(Va rugam sa asteptati pina ati fost trimis la noua pagina ' + noua+pagina)
function DeschideNouaPag()
{
location.href=noua_pagina;
}
setTimeout ("DeschideNouaPag()", 1000);
</script>
Variabila noua_pagina contine informatii despre pagina unde vrem sa ajungem iar functia DeschideNouaPag() este folosita pentru a
trimite utilizatorul la noua pagina dupa un interval de timp. De obicei se pune un link si o functie care face transferul automat.
Exemplu 3
========
Acest script va rula o melodie atunci cind vom pagina respectiva.
<script language="JavaScript">
<!-if(navigator.userAgent.indexOf("MSIE") != -1)
document.writeln ('');
else
document.writeln ('<EMBED SRC="imagine.mid" AUTOSTART="true" HIDDEN="true" VOLUME="80%">');
//-->
</script>
<script language="Javascript">
<!-Exemplu 4
========
Sa definim o functie in JavaScript care sa ne afiseze timpul in acest moment:
<html>
<head>
<title>
</title>
<script language="JavaScript">
function getTime()
{
var acum=new Date();
// citim data curenta si o storam in variabila acum
var ora=acum.getHours();
// din variabila acum citim ora
var minute=acum.getMinutes();
// din variabila acum citim minutele
var secunde=acum.getSeconds();
// din variabila acum citim secundele
acum=null;
var am_pm="";
Confidential
Page 97
3/25/2016
Confidential
Page 98
3/25/2016
Confidential
Page 99
3/25/2016
</A><br>
<A href="ex2.htm" onMouseOut="document.but2.src='but2_on.gif';"
onMouseOver="document.but2.src='but4_on.gif';"
target=princ>
<IMG SRC="but2_on.gif" name="but2">
</A><br>
<A href="ex3.htm" onMouseOut="document.but3.src='but3_on.gif';"
onMouseOver="document.but3.src='but4_on.gif';"
target=princ>
<IMG SRC="but3_on.gif" name="but3">
</A><br>
<br>
</body>
</html>
Exemplu 7
========
In acest caz de cele mai multe ori trebuie sa incarci in memorie imaginile pentru butoane. Pentru a realiza acest lucru
trebuie sa folosim un script care sa incarce imaginiile in memorie.
<script language=JavaScript>
image1 = new Image();
image1.src = "image1.gif";
image2 = new Image();
image2.src = "image2.gif";
</script>
Exemplu 8
========
Crearea unui image slide show. Pentru a creea un slide show va trebui mai intii sa adunam citeva imaginii pe care vrem
sa le punem in show.
Va trebui apoi sa incarcam aceste imaginii in memorie inainte de a fi afisate, acest lucru este necesar deoarece
schimbarea intre imaginii trebuie sa se faca instantaneu fara pauze.
<head>
<script language="JavaScript1.1">
<!-var image1=new Image()
image1.src="firstcar.gif"
var image2=new Image()
image2.src="secondcar"
var image3=new Image()
image3.src="thirdcar.gif"
//-->
</script>
</head>
Se observa ca in acest caz codul pentru imagini a fost inserat in hederul fisierului html .
Codul pentru a afisa prima imagine este:
<body>
<img src=firstcar.gif name=slide width=100 height=56>
</body>
Se observa ca am dat imagini un nume care ne va permite sa realizam manipularea ferestrei pentru a accesa imaginea.
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 100
3/25/2016
<script language=JavaScript>
<!
var step=1
function slideit()
{
if (!document.images)
return
document.images.slide.src=eval(image+step+.src)
if (step<3)
step++
else
step=1
set Timeout(slideit(),2500)
slideit()
//
</script>
Daca vom pune aceste functii impreuna intr-o pagina atunci o sa avem un show cu imaginii care se schimba.
<html>
<head>
<script language="JavaScript1.1">
<!-var image1=new Image()
image1.src="firstcar.gif"
var image2=new Image()
image2.src="secondcar"
var image3=new Image()
image3.src="thirdcar.gif"
//-->
</script>
</head>
<body>
<img src="firstcar.gif" name="slide" width=100 height=56>
<script>
<!-//variable that will increment through the images
var step=1
function slideit(){
//if browser does not support the image object, exit.
if (!document.images)
return
document.images.slide.src=eval("image"+step+".src")
if (step<3)
step++
else
step=1
//call function "slideit()" every 2.5 seconds
setTimeout("slideit()",2500)
}
slideit()
//-->
</script>
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 101
3/25/2016
</body>
</html>
Exemplu 9
========
Crearea unui slide show folosind mouse-ul pentru a face tranzitia de la o imagine la alta.
La inceput va trebui sa folosim un tag de imagini pentru a pune un link la o imagine existenta :
<a href=javascript:slidelink()>
<img src=firstcar.gif name=slide width=100 height=56>
</a>
Ce avem este javascript:slidelink() care in loc sa apeleze un URL va executa o functie avaScript.
In urmatoarea etapa va trebui sa definima functia slidelink().
<script>
<!
var step=1
var whichimage=1
function slideit()
{
if (!document.images)
return
document.images.slide.src=eval(image+step+.src)
whichimage=step
if (step<3)
step++
else
step=1
setTimeout(slideit(),1800)
}
slideit();
function slideit()
{
if (whichimage==1) window.location=link1.htm
else
if (whichimage==2) window.location=link2.htm
else if (whichimage==3) window.location=link3.htm
}
//
</script>
Dupa cum se observa in acest caz avem un parametru whichimage care tine minte care imagine a fost incarcata inainte
de a schimba pagina web prin pastrarea parametrului care se gaseste in step. Apoi in functie de acest parametru se va
rechema un alt fisier html.
<html>
<head>
<script language="JavaScript1.1">
<!-//preload images
var image1=new Image()
image1.src="firstcar.gif"
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 102
3/25/2016
Confidential
Page 103
3/25/2016
Confidential
Page 104
3/25/2016
var bVer=parseInt(navigator.appVersion);
var NS4=(bName==Netscape&&bVer>=4);
var IE4=(bName==Microsoft Internet Explorer && bVer>=4);
//
</script>
Scriptul de mai jos face acelasi lucru verificind daca browserul suporta anumite obiecte specifice:
<script language=JavaScript>
<!
var NS4=(document.layers)?1:0;
var IE4=(document.all)?1:0;
if (IE4||NS4) document.write(Ai un browser de generatie >= 4.0);
//
</script>
NS4 este true daca browserul supporta obiecte de tipul document.layers (Netscape ver 4.0 sau >4.0). Daca supporta
obiecte de tipul document.all atunci browserul este IE 4.0 sau mai mare. Ultima comada de tip if verifica daca NS4 sau
IE4 sunt true si scrie un mesaj pentru utilizator confirmind existenda unui browser care are versiunea >=4.0.
Containerul HTML
Este timpul apoi sa creem data care va fi inserata la un anumit punct in document. Trebuie sa definim exact pozitia
bannerului nostru si de aceea vom folosi <span>..</span>.
Navigator 4.x poate sa scrie cod HTML la un element pozitionat (position:absolute) asa ca va trebui sa pozitionam
elementul respectiv. Dar deoarece va trebui sa plasam elemntul respectiv in document va trebui sa specificam
elementele de pozitionare
left si top.
<span id=banner style=position:absolute;></span>
Daca vrei sa pozitionezi bannerul folosind coordonatele exacte putem folosi propietatile left si top.
<span id=banner style=position:absolute; left: 100; top: 300;>
</span>
Am promis ca vom creea un script care poate rula si in browseri mai vechi de versiunea 4.0 . De aceea daca ai un
browser care este mai vechi de versiunea 4.0 atunci va trebui sa pui intre <span></span> textul dorit. Daca in schimb nu
vrei un banner static sau nu ai unul din browserele vechi va trebui sa pastrezi definitia <span></span> goala.
In functie de cum ai decis sa pui acest element in document, el va trebui sa fie urmat de doi <BR>. Deoarece este un
element pozitionat continutul care a fost plasat dupa banner nu conteaza pentru spatiul bannerului. De aceea doua
tagURL <BR> sunt necesare.
Daca ne uitam la definitia functiei <SPAN> de mai sus care arata ca mai jos:
<SPAN ID=banner style=position:absolute;></span>
Astfel atributul ID este similar cu atributul NAME din definitiile folosite in codul HTML . Aceast atribut ID va fi folosit
pentru a referi elementul in JavaScript. Astfel in Netscape acest obiect va fi referit de document.banner pecind in
Internet Explorer el este referit de document.all.banner sau simplu banner .
Acum poate ai inteles de ce este necesar sa folosim functia pentru detectarea browserului.Astfel in concluzie putem
spune ca Microsoft si Netscape au ajuns la un comun punct de vedere in ceea ce priveste CSS dar nu au ajuns in ceea ce
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 105
3/25/2016
priveste reprezentarea obiectelor. Netscape trateaza pozitionarea elementelor ca si o noua fereastra browser, asa ca poti
sa scrii in obiectele document, pe cind IE are o propietate care se refera la continutul din interior: innerHTML .
De aceea este necesar sa scriem o functie care aloca continutul obiectelor.
Function display(id, str)
{
if (NS4)
{
with(document[id].document)
{
open();
write(str);
close();
}
}
else
{
document.all[id].innerHTML=str;
}
}
Pentru a roti bannerul nostru vom folosi aceasta functie :
display(banner,new code here);
Rotirea mesajelor
Acum va trebui sa punem totul impreuna pentru a face bannerul sa se roteasca. Pentru inceput va trebui sa setam
evenimentul
Onload pentru a porni bannerul.
onload=start;
Deoarece onload este o propietate a unui obiect window, poti sa omiti specificatia obiectului. In acest caz window este
obiectul implicit.
Functia start() va porni asa cum ii spune si numele bannerul respectiv.
Function start()
{
setInterval(update(),2000);
}
Se observa ca am asignat functia setInterval() la o variabila, deci va fi posibil sa oprim bannerul. Vom folosi
setInterval() pentru a apela functia update() la fiecare interval de 2000 ms care sunt de fapt 2s.
In general, the setInterval() este o functie care apeleaza o expresie sau o alta functie dupa ce un numar de millisecunde
au trecut. Acesta functie de timp va continua pina cind fereastra, frame-ul a fost inchis sau functia clearInterval() a fost
apelata.
Var varName=setInterval(statement,msec);
Se observa ca aplicatia de tip banner nu este apelata decit dupa ce pagina a fost in intregime incarcata, pentru ca functia
a fost initializata de evenimentul onload. Daca acest lucru nu este ceva care te multumeste poti sa stergi acest cod si sa
pui oriunde
In document urmatorul script:
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 106
3/25/2016
<script language=JavaScript>
start();
</script>
Asa cum vezi functia update()este functia care avanseaza bannerul si reseteaza counter-ul daca ultimul element din array
a fost atins.
Function update()
{
display(banner,ar[num]);
num++;
if (num==ar.length) num=0;
}
In vectorul ar vom pastra messajele din banner:
Var ar=new Array();
ar[0]=<STRONG>Hot sites:</STRONG><a href=/js> Doc JavaScript</a>
ar[1]=<strong>Hot sites</strong><a href=/dhtml> Dynamic HTML Lab
ar[2]=<strong>Hot sites:</strong><a href=/3d> 3D Animation Workshop</a>
Daca vom initializa variabila num cu valoarea 0 atunci bannerul va porni cu primul mesaj.
Var num=0;
Codul aplicatiei:
<HTML>
<HEAD>
<TITLE>Title Here</TITLE>
<SCRIPT LANGUAGE="JavaScript1.2">
<!-var NS4 = (document.layers) ? 1 : 0;
var IE4 = (document.all) ? 1 : 0;
onload = start;
var ar = new Array();
ar[0] = "<STRONG>Hot sites:</STRONG> <A HREF='/js/'> -->Doc JavaScript</A>";
ar[1] = "<STRONG>Hot sites:</STRONG> <A HREF='/dhtml/'> -->Dynamic HTML Lab</A>";
ar[2] = "<STRONG>Hot sites:</STRONG> <A HREF='/3d/'> -->3D Animation Workshop</A>";
var num = 0;
function start() {
setInterval("update()", 2000);
}
function update() {
display("banner", ar[num]);
num++;
if (num == ar.length) num = 0;
}
function display(id, str) {
if (NS4) {
with (document[id].document) {
open();
write(str);
close();
}
} else {
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 107
3/25/2016
document.all[id].innerHTML = str;
}
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<SPAN ID="banner" STYLE="position: absolute;"><I>the banner -->
is loading</I></SPAN><BR><BR>
</BODY>
Exemplu 12
=========
Folosirea functiei <select></select> pentru a creea un meniu.
<html>
<head>
<title></title>
<SCRIPT LANGUAGE="JavaScript">
<!-function load(form) {
var url = form.list.options[form.list.selectedIndex].value;
if (url != "") location.href = url;
return false;
}
// -->
</SCRIPT>
</head>
<FORM NAME="menu" METHOD="POST" onSubmit="return load(this)">
<SELECT NAME="list" onChange="load(form)">
<OPTION VALUE="http://www.ecadro.com/princ.html" SELECTED>Corporate Info
<OPTION VALUE=" http://www.ecadro.com/cinfo.html">Specials&News
<OPTION VALUE=" http://www.ecadro.com/conv_2d.html">2D Conversion
<OPTION VALUE=" http://www.ecadro.com/conv_3d.html">3D Conversion
<OPTION VALUE=" http://www.ecadro.com/fea_3d.html">FEA Models
<OPTION VALUE=" http://www.ecadro.com/render_3d.html">Rendering
<OPTION VALUE=" http://www.ecadro.com/price.html">Price
<OPTION VALUE=" http://www.ecadro.com/Contact.htm">Contact us
<OPTION VALUE=" http://www.ecadro.com/gallery.html">Gallery
</SELECT>
<INPUT TYPE="submit" VALUE="Load">
</FORM>
</body>
</html>
Confidential
Page 108
3/25/2016
DHTML INTRODUCERE
DHTML ne ajuta sa creem documente care sa incorporeze layere, pozitionare, selectare de pagina si animatie pe o
singura pagina de web folosind script si pagini de stil.Pentru a creea un cod DHTML care sa ruleze in orice browser, exista o
anumita insiruire de comenzii care trebuiesc respectate.
1.
Inainte de a realiza un proiect va trebui sa-ti pui ideeile pe hirtie , acestea cuprizind informatii detaliate despre
grafica si iteratiile din pagina, de asemenea va trebui sa te duci sa gasesti resurse in DHTML pentru ca poate nu esti
la fel de documentat ca in JavaScript si Style Sheet development.
2. Creeaza-ti mediul aplicatiei tale prin programele scrise in JavaScrpt care sa-ti permita sa citeste compatibilitatea
browser-ului si rezolutia ferestrei. Gndestete cum vrei sa afisezi pagina ta fie intr-o fereastra care exista, fie intr-un
frame fie intr-o fereastra noua.
3. Planificati si dezvoltati grafica pentru a beneficia de avantajele mediului DHTML incluzind marimea ferestrei si
pozitia.
4. Incepe prin a creea foi cu layer de stil si umplele cu grafica si text.
5. Seteaza-ti variabilele DOMS (Document Object Switch) astfel ca programul tau sa ramina compatibil intre
browsere.
6. Implementeaza un script pentru incarcarea imaginiilor in memorie daca vrei sa ai animatiei in timp real.
7. Pozitioneaza dinamic layerele dupa ce imaginea a fost incarcata in memorie.
8. Creeaza animatia pentru introducere si pentru a pastra site-ul interesat.
9. Adauga controale interactive pentru navigatie in meniu si pentru scroll in pagina.
10. Pune in comun ceea ce ai invatat cu alti.
Crearea mediului pentru site-ul tau
Setarile pentru mediu browserului te va ajuta sa vizualizezi modul cum va arata pagina ta . Tot aici va trebui sa faci
separatie intre browsers care suporta DHTML si cei care nu suporta.
O astfel de rutina este prezentata mai jos:
function Is()
{
var agent=navigator.userAgent.toLowerCase();
this.major=parseInt(navigator.appVersion);
this.minor=parseFloat(navigator.appVersion);
this.ns=((agent.indexOf(mozilla)!=-1)&&((agent.indexOf(spoofer)==-1)&&
(agent.indexOf(compatible)==-1)));
this.ns2=(this.ns&&(this.major==3));
this.ns3=(this.ns&&(this.major==3));
this.ns4b=(this.ns&&(this.major<=4.04));
this.ns4=(this.ns&&(this.major>=4));
this.ie=(agent.indexOf(msie)!=-1);
this.ie3=(this.ie&&(this.major==2));
this.ie4=(this.ie&&(this.major>=4));
this.op3=(agent.indexOf(opera)!=-1);
this.win=(agent.indexOf(win)!=-1);
this.mac=(agent.indexOf(mac)!=-1);
this.unix=(agent.indexOf(X11)!=-1);
}
Var is=new Is();// este variabila care apelata in script ne va returna ce tip de browser avem.
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 109
3/25/2016
Pentru a afla compatibilitatea browserelor se folosesc agentii navigator.userAgent si navigator.appVersion sunt testati
pentru a vedea care este valoarea obiectelor lor.Se testeaza astfel daca browserul este Netscape, Explorer , Opera apoi se
testeaza care este versiunea si care este platforma de operare.
Aceaste teste sunt necesare pentru ca unele din aceste browsere au functii care realizeaza incarcarea imaginiilor cum ar
fi spre exemplu Netscape cu versiune mai mare de 4.04.
Sa creem un program html care foloseste rutina anterioara si care afiseaza in browser aceste verificarii:
<HTML>
<HEAD>
<title>
Detectarea Browserului
</title>
<script language="JavaScript">
function Is()
{
var agent=navigator.userAgent.toLowerCase();
this.major=parseInt(navigator.appVersion);
this.minor=parseFloat(navigator.appVersion);
this.ns=((agent.indexOf('mozilla')!=-1)&&((agent.indexOf('spoofer')==-1)&&
(agent.indexOf('compatible')==-1)));
this.ns2=(this.ns&&(this.major==3));
this.ns3=(this.ns&&(this.major==3));
this.ns4b=(this.ns&&(this.major<=4.04));
this.ns4=(this.ns&&(this.major>=4));
this.ie=(agent.indexOf("msie")!=-1);
this.ie3=(this.ie&&(this.major==2));
this.ie4=(this.ie&&(this.major>=4));
this.op3=(agent.indexOf("opera")!=-1);
this.win=(agent.indexOf("win")!=-1);
this.mac=(agent.indexOf("mac")!=-1);
this.unix=(agent.indexOf("X11")!=-1);
document.writeln("<br>");
document.writeln("navigator.userAgent=");document.writeln(navigator.userAgent);document.writeln("<br>");
document.writeln("navigator.appVersion=");document.writeln(navigator.appVersion);document.writeln("<br>");
document.writeln("parseInt(navigator.appVersion)=");document.writeln(parseInt(navigator.appVersion));document.write
ln("<br>");
document.writeln("parseFloat(navigator.appVersion)=");document.writeln(parseFloat(navigator.appVersion));document.
writeln("<br>");
}
</script>
</HEAD>
<body>
<script>
var este=new Is();
document.write("Este Netscape=");document.writeln(este.ns);document.writeln("<br>");
document.write("Este Netscape ver 2 =");document.writeln(este.ns2);
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 110
3/25/2016
document.writeln("<br>");
document.write("Este Netscape ver 3 =");document.writeln(este.ns3);
document.writeln("<br>");
document.write("Este Netscape ver 4 =");document.writeln(este.ns4);
document.writeln("<br>");
document.write("Este Netscape ver 4b =");document.writeln(este.ns4b);
document.writeln("<br>");document.writeln("<br>");
document.write("Este Explorer =");document.writeln(este.ie);
document.writeln("<br>");
document.write("Este Explorer ver 3 =");document.writeln(este.ie3);
document.writeln("<br>");
document.write("Este Explorer ver 4 =");document.writeln(este.ie4);
document.writeln("<br>");document.writeln("<br>");
document.write("Este Opera ver 3 =");document.writeln(este.op3);
document.writeln("<br>");document.writeln("<br>");
document.writeln("Este Windows=");document.writeln(este.win);document.writeln("<br>");
document.writeln("Este Mac=");document.writeln(este.mac);document.writeln("<br>");
document.writeln("Este UNIX=");document.writeln(este.unix);document.writeln("<br>");
</script>
</body>
</HTML>
Acum ca am detectat ce browser avem trebuie sa detectam ce rezolutuie avem pentru a putea planifica pagina DHTML
si modul cum va fi afisata de a llungul a mai multor platforme.Screen resolution este de fapt marimea in pixeli a a
intregului ecran in functie de marimea ferestrei, deci in concluzie este marimea in pixeli a ferestre browserului care este
deschisa.
Cind creem o noua fereastra este bine sa cunoastem care este rezolutia pentru a determina care este pozitia si marimea
noi ferestre. Mai jos avem o functie care ne ajuta sa capturam rezolutia si sa o storam intr-o variabila var.
Var screen_width=screen.width;
Var screen_height=scren.height;
Pentru a putea construi layoutul paginei tale este important sa cunoastem de fapt care este spatiul in fereastra. Deci
vpom folosi un script care va citi spatiul din fereastra si-l va stoca in variabilele available_width si available_height
pentru al folosi mai tirziu si pentru a putea realiza trecerea de a lungul unor browseri va trebui sa punem functia onLoad
in interiorul tagului <BODY> .
Confidential
Page 111
3/25/2016
function openWindow() {
if(is.ns4 || is.ie4") {
var window_left = (screen.width-800)/2;
var window_top = (screen.height-600)/2;
window.open('cURLous_eye.htm','cURLousEye','width=800,height=600,top=' + window_top + ',left='
+ window_left + '');
}
}
Layere
Sunt de fapt blocul de baza care ne eprmit sa suprapunem text si sa pozitionam text si grafica oriunde vrem .
Confidential
Page 112
3/25/2016
Width:100px; atribuie latimea layerului, iar height=100px; atribuie inaltimea layerului . In cazul anterior atit latimea cit
si inaltimea sunt 100 px.
Clip: rect(0,100,50,0); defineste fereastra de a lungul layerului folosind comanda rect(Top,Right,Bottom,Left) pentru a
defini areea respectiva. Numai portiunea din layer care va fi in interiorul areie respective va fi vizibila. In acest exemplu
avem top=0px; right=100px;bottom=50px si left=0px; Dar cum layerul are 100x100px, iar area are 100x50px numai
jumatate din layer va fi vizibil.
z-index: 2; atribute care defineste care este ordinea de asezare a layerelor. Un index z-index=1 indica faptul ca layer-ul
respectiv este cel mai de jos in stack. Poti de aceea sa asezi un alt layer peste acesta folosind z-index=2;
Visibility:hidden; este atributul care defineste daca layer-ul respectiv este ascuns sau nu. Layere care au attributul
Visibility=hidden nu pot fi vazute pe cind layere care au atributul visibility=visible pot fi vazute. Atributul de
visibilitate ca si toate atributele unui layer pot fi usor controlate din interiorul unui script JavaScript.
Controlul fontURLlor
O foie de stil poate precis controla tipul de font, marimea, stilul si culoarea. Beneficiile folosirii unei foie de style este
faptul ca se poate face o singura modificare si fondul va fi modificat in toate paginiile paginei tale web. O sa incercam
in exemplele urmatoare sa definim si sa folosem stilURL de font.
Sa presupunem ca dorim sa creem un font numit PRINC iteratiunea de comenzii necesara pentru a realiza acest lucru
este:
.PRINC
{
font-size: 10pt;
font-weight:100;
color : #DDDDBB;
font-family: verdana, arial, helvetica, sans-serif;
}
Pentru a folosi acest font definit intr-un fisier HTML putem folosi insiruirea de comenzii:
<FONT CLASS=PRINC>Font Control</FONT>
In plus ca poti sa-ti definesti propriile tale nume poti de asemenea sa alterezi tagURLle html cum ar fi spre exemplu
tagul <B>.
B
{
font-size: 9pt;
font-weight: 100;
font-family: CoURLer New, arial, helvetica, sans-serif;
color: #FFFFFF;
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 113
3/25/2016
}
Sa vedem intr-un exemplu cum putem creea si folosi fontu-ri noi. Pentru a putea realiza acest lucru va trebui mai intii sa
definim un fisier styles.css care va contine definitiile noastre.
In cazul nostru o sa definim fontul PRINC si PRINC1:
.PRINC
{
font-size: 10pt;
font-weight:100;
color : #DDDDBB;
font-family: verdana, arial, helvetica, sans-serif;
}
.PRINC1
{
font-size: 6pt;
font-weight:60;
color : #DDDDBB;
font-family: verdana, arial, helvetica, sans-serif;
}
Apoi vom salva fisierul cu numele styles.scc . Vom vedea in continuare cum vom putea folosi acest fisier in codul nostru
html . In sectiunea dintre <head> si </head> va trebui sa folosim urmatoarea comanda:
<LINK REL=stylesheet TYPE="text/css" HREF="styles.css" TITLE="style">
<html>
<head>
<title></title>
<LINK REL=stylesheet TYPE="text/css" HREF="styles.css" TITLE="style">
</head>
<body>
<FONT CLASS=PRINC>Font Control PRINC</FONT>
<FONT CLASS=PRINC1>Font Control PRINC1</FONT>
</body>
</html>
Sa consideram si exemplu in care definim stilURLle in cadru unui fisier html si le folosim in acelasi timp:
<html>
<head>
<title>Folosirea definitiei de stylURL</title>
</head>
<body>
<style>
.PRINC
{
font-size: 10pt;
font-weight:100;
color : #DDDDBB;
font-family: "verdana", "arial", "helvetica", sans-serif;
}
.PRINC1
{
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 114
3/25/2016
font-size: 6pt;
font-weight:60;
color : #DDDDBB;
font-family: "verdana", "arial", "helvetica", sans-serif;
}
</style>
<FONT CLASS=PRINC>Font Control PRINC</FONT><br>
<FONT CLASS=PRINC1>Font Control PRINC1</FONT>
</body>
</html>
DOMS
Pentru a face codul DHTML compatibil atiti in browsere cum ar fi Netscape si Explorerf un DOM (document object
model script ) este folosit. Mai jos este descris un script care este folosit pentru a asigna browser-ului variabile specifice
cum ar fi doc, sty si htm depinzind de browser-ul folosit. Aceste variabile vor fi folosite apoi pentru a creea metode
JavaScript pentru a salva necesiatea scrieri unui cod pentru fiecare browser.
if (is.ns4)
{
doc=document;
sty=;
htm=.document;
}
else
if (is.ie4)
{
doc=document.all;
sty=.style;
htm=;
}
Fuctia is() pe care am descris-o anterior va fi folosita pentru a testa daca este Netscape sau Explorer. Astfel daca is.ns4
va returna true atunci vom avea Netscape, daca is.ie4 atunci ceea ce vom avea va Explorer.Variabila doc este folosita
deoarece browsere se refera la documente in mod diferit . Astfel document.object este folosit de Netscape pe cind
document.all.object este folosit de Exoplorer. Variabila sty este folosita pentru a determina cum sunt referite foile de
style pentru cele doua programe: Astfel Netscape foloseste : netscape.style_name.object pe cind Explorer foloseste
document.all.style_name.style.object . Variabila htm este folosit apentru a determina cum cele doua browser folosesc
objecte html cu un style sheet layer. Pe cind Netscape foloseste document.style_name.document.object, Explorer
foloseste document.all.style_name.style.object .
Preincarcarea imaginiilor
Pentru a realiza animatie in timp real cu DHTML este bine sa incarcam imaginiile in memoria browserului. Acest lucru
este realizat folsoind o metoda de incarcarea imaginiilor si odata imaginile incarcate in memorie ele pot fi controlate
prin program pentru a produce animatie.
var count =0;
function preLoad()
{
sfera1=new Image();
sfera1.onLoad=(is.ns4b) ? loadCheck() : loadCheck;
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 115
3/25/2016
sfera1.src=sfera1.gif;
sfera2=new Image();
sfera2.onLoad= (is.ns4b) ? loadCheck() : loadCheck;
sfera2.src=sfera2.gif
}
function loadCheck()
{
count++;
if (count==2)
{
positionLayers();
}
}
The preLoad() este initiata de functia onLoad() acest eveniment aflindu-se in interiorul tagului <BODY> dupa cum se
vede aici:
<BODY onLoad=preLoad()>
Primul pas este de a creea o functie preload() si de a creea o imagine obiect si de asigna aceasta functie unei variabile:
var imageName= new Image()
To determina daca imaginea este incarcata evenimentul imageName.onload-loadCheck este folosit pentru a apela functia
:
loadCheck() de fiecare data in memorie si astfel se verifica daca imaginea a fost imarcata in memorie. Astfel daca
image.onLoad va returna true imaginea a fost incarcata in memorie in schimb daca image.onLoad va returna false
imaginea nu a fost incarcata in memorie.Dupa ce a fost incarcata in memorie un atribut de tip src va fi asignat acestei
imaginii:
imageName.src=image.gif.
Functia LoadCheck() este simpla si are o variabila count care este incrementata odata ce imaginea a fost creata in
memorie . Odaca ce valoarea a fost incrementata la doi inseamna ca imaginea a fost incarcata in memorie si poate fi
apelata functia pentru pozitionarea layerelor.
Pozitionarea
Initial creem un sheet dinamic fara a folosi atributele left si top si visibility a fost setata sa fie hidden. Dupa ce imaginea
a fost incarcata vom putea utiliza layere obiect, sa pozitionam dinamic aceste layere si apoi sa le facem vizibile.
Functia de pozitionare a layerelor.
Function positionLayers()
{
sfera1Img=eval(doc+[sfera1Lyr]+.document);
sferaObj=eval(doc+[sfera1Lyr]+sty);
sfera1Obj.left=7;
sfera1Obj.top=availabl_height-230;
sfera2Img=ecal(doc+[sfera2Lyr]+.document);
sfera2Obj=eval(doc+[sfera2Lyr]+sty);
sfera2Obj.left=parseInt(sfera1Obj.left)+40;
sfera2Obj.top=parseInt(sfera1Obj.top)+74;
sfera1Obj.visibility=visible;
sfera2Obj.visibility=visible;
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 116
3/25/2016
animate();
}
Primul pas in pozitionarea layerelor este: positionLayers() care este folosita pentru a defini doua tipURL de layere
objects utilizind variabile DOMS. Primul tip de layer este de tip imagine si este folosit pentru a accesa propietatile unei
imaginii plasata pe un layer si definita cum urmeaza :
Sfera1Img=eval(doc+[sfera1Lyr]+.document);
Dupa cum se stie doc este un parametru care defineste diferentele dintre Netscape si Explorer pentru orice document
care se gaseste in interiorul pagini DHTML. Sfera1Lyr este ID layerului si odata acesta definit este asignat unei
variabile sfera1Img care este folosita in viitor pentru a controla imaginea dinamic in interiorul layerului.
Al doilea tip este folosit pentru a accesa direct propietatile layerului si poate fi construit cu ajutorul urmatoarei variabile
DOMS.
Sfera1Obj=eval(doc+[sfera1Lyr]+sty);
Dupa cum se stie sty este un parametru care este folosit pentru a cntrola diferentele dintre Netscape si Explorer pentru
orice obiect care se gaseste intr-un sheet de layere. Odata creat acest obiect de tip layer este asignat variabilei sfere1Obj
si este folosit mai tirziu pentru manipularea atributelor layerelor.
Confidential
Page 117
3/25/2016
Animatie
Exista doua tipURL de animatie si anume animatia imaginei ai animatia layerului. Desi sunt doua tipURL de animatie
diferite ele pot fi folosite si impreuna pentru a produce animatie complexa dar pot fi folosite si separat.
Layer animation
Prin animatia unui layer se intelege de fapt mutarea pozitie left si top pentru un layer in bucla recursiva .
function animateLayer()
{
var x_pos1=parseInt(sfera1Obj.left);
var x_pos2=parseInt(sfera1Obj.left);
if (x_pos1<47)
{
sfera1Obj.left=x_pos1+2;
sfera2Obj.left=x_pos2-2;
setTimeout(animateLayers(),1);
}
}
Primul pas pe care trebuie sa-l faci intr-o animatie este sa storezi pozitia curenta pentru layerul pe care il animezi intr-o
variabila in cazul nostru var x_pos1=parseInt(sfera1Obj.left); Functia parseInt() converteste pozitia layerului intr-un
numar care pastreaza compatibilitatea nai multor browsere. Deoarece noi mutam doua obiecte cel de-al doilea obiect
este storat in x_pos2.
Apoi vom testa pozitia curenta cu cea pe care o dorim intr-un sfirsit astfel vom avea :
if (x_pos1<47) atunci ce va fi in interiorul functiei if va fi executat si anume vom muta layerul prin mutarea pozitie
stinga a acestuia: sfera1Obj.left=x_pos1+2; Aceasta comanda va muta pozitia layerului cu doi pixeli catre dreapta. Poti
astfel sa controlezi pozitia si mutarea layerului prin adaugarea si scaderea unor numere la pozitia curenta.
Functia setTimeout() este folosita pentru a apela recursiv functia animateLayers() la un interval de 1 millisecunda.
Poti sa maresti viteza sau sa incetinezi viteza prin modificarea timpului de delay pentru bucla. Astfel se va realiza
animatia pina cind layerul va ajunge in pozitia finala.
<!-- -->
<COMMENT></COMMENT>
<HTML></HTML>
<HEAD></HEAD>
<BODY></BODY>
Confidential
Page 118
3/25/2016
JAVA INTRODUCERE
Istoria limbajului Java
In 1990 un domn pe nume James Gosling I s-a dat drept tasc de a creea programe pentru a controla electronicele .
Gosling si echipa lui de oameni de la Sun Microsystems au inceput sa-si dezvolte propriu lor soft folosing C++ ,
limbajul pentru care cei mai multi programatori au gindit ca este cel mai mare lucru pentru natura sa de obiect orientat . Ei au
gasit ca C++ nu a fost un program bine ales pentru proiectele lui si echipa lui. Ei au ajuns la probleme cu aspecte complicate ale
C++ cum ar fi multiple intercalari intre clase si baguri de programare cum ar fi pierderi ale memoriei.
Gosling a decisa sa vina cu propria lui varianta simplificata de limbaj de programare care au inlaturat toate problemele
pe care le avea C++.
Desi Gosling nu tinea cont de complexitatea limbajului cum ar fi C++, lui nu I-a placut sintaxa de baza si modul cun
formele acestui obiect-orientated limbaj apar. Asa cind s-a apucat sa proiecteze noul lui limbaj, el a folosit C++ ca model, si a dat
la o parte forme din C++ care faceau limbajul dificil de folosit cu proiectele lui de consumator-electronic. Cind Gosling a
completat noul lui limbaj de programare, el a avut un nou limbaj de programare pe care l-a numit Oak. (Se spune ca numele de
Oak vine de la faptul ca Gosling s-a uitat pe fereastra lui si a vazut un arbore oak dupa ce a terminat limbajul de progamare).
Oak a fost pentru prima data folosit intr-un proiect numit Green, unde echipa de proiectare a dorit sa dezvoltat un
sistem de control pentru a fi folosit acasa. Acest nou sistem il ajuta pe utilizator sa manipuleze o serie de aparate electronice, cum
ar fi TV, VCR, luminile si telefoanele, toate cu ajutorul unui computer numit *7 (Star Seven). Acest sistem avea un ecran sensibil
la atingere pe care propietarul il utiliza sa selecteze si sa controleze aparatele suportate de control.
Ecranul care afisa meniurile aplicatiei *7 constituite din figuri animate, cum ar fi Duke (acum micutul care poate fi considerat
mascota Java) . Odata ce ve invata Java vei vedea o multime de astfel de omuleti care sar in sus pe site-ul lui Sun Microsystems
si care sunt de asemenea folositi in citeva exemple de applets Java.
Confidential
Page 119
3/25/2016
Urmatorul pas pentru Oak a fost video la cerere (VOD) proiect, in care acest limbaj a fost folosit ca baza pentru softul
care controla un sistem de televiziune interactiv. Nici *7 si nici VOD nu au dus la produse finale, si au dat limbajului Oak sansa
sa se dezvolte si sa se maturizeze. Atunci cind Sun a descoperit acest limbaj el s-a numit Oak dar S-a descoperit ulterior ca
acest nume a fost ales deja si a fost schimbat in Java, care era un limbaj simplu dar puternic pe miinile lui. Ceea ce era mai
important era faptul ca nu depindea de platforma pe care era rulat acest program , asta insemna ca programele care erau
dezvoltate cu Java putea rula pe orice sistem fara a fi schimbate. Aceasta independenta de platforma a cerut sa se foloseasca un
format special pentru programele compilate in Java. Astfel fisierul format care se numeste byte-code, poate fi citit si executat pe
orice sistem care are un interpretor Java. Bineinteles ca interpretorul Java poate fi scris special pentru orice sistem pe care el o sa
ruleze. In 1993, dupa ce World Wide Web a transformat internetul bazat pe text in internet bazat pe grafica , echipa Java a realizat
ca limbajul pe care l-au dezvoltat poate fi perfect pentru programarea Web. Echipa a venit cu conceptul de programare de aplette
Web, programe mici care pot fi incluse in paginile Web, si chiar mai departe pentru a creea un complicat Web Browser (acum
numit HotJava) care demonstreaza puterea limbajului.
In al doilea trimestru din 1995, Sun Microsystems a anuntat oficial Java. Noul limbaj a fost repede inteles ca o scula
puternica pentru a dezvolta aplicatii pentru internet. Netscape Communicator, dezvoltatorul aplicatie Netscape navigator Web
browser a adaugat suportul pentru Java si la fel si Internet Explorer incepind de la versiunea beta ofera suport Java. Astfel dupa
cinci ani de dezvoltare Java si-a gasit casa lui.
Confidential
Page 120
3/25/2016
</head>
<body>
<applet code=Clock.class width=200 height=200 alt=Exemplu de applet ceas name=ceas
align=middle>
</applet>
</body>
</html>
De asemenea se poate apela un aplet cu parametrii, pentru a realiza acest lucru se poate folosi urmatoarea comanda:
<applet code=applet1.class name=cod1 width=200 height=200>
<param name=nume value=valoare>
<param name=nume value=valoare>
<param name=nume value=valoare>
</applet>
Confidential
Page 121
3/25/2016
De switch-uri la obiecte
Primele computere erau compuse din switch-uri care pot fi schimbate si care pot contine informatie de tip 1/0 in functie
de pozitia acestor intrerupatoare apoi au aparul limbajele cod masina care s-au dovedit a fi foarte greoaie si de aceea peste aceste
limbaje cod masina au fost create limbaje care sa ne permita sa scriem mai usor cod sursa cum ar fi Fortran , Pascal, C si C++.
Sa consideram in continuare urmatoarea aplicatie :
O familie a petrecut noaptea de anul nou si trebuie sa faca curat dupa aceast chef. Pentru a realiza acest lucru va trebui
sa scriem un program ca mai jos:
-
Acest tip de limbaj este cel care era dezvoltat odata ce a fost dezvoltat Fortran-ul si alte limbaje de programare epoca
numita in istoria programari dark age of computing.
Odata cu dezvoltarea limbajelor de programare programatori trebuiau sa se concentreze mai mult a ceea ce trebuia sa
faca programele respective decit a codului sursa, aparind asa zisi senior programatori care scriau pseudo cod si care la rindul
lui era trebui in limbaj de programare folosind junior programatori
In ziua de astazi odata cu dezvoltarea programelor high-level, a fost necesar ca acestia sa isi imparta programul in
sectiuni logice care sa reprezinte tascurile generale ce urmeaza a fi indeplinite. In acest caz s-a nascut programarea structurala in
care programtori sunt mai mult preocupati de aplicatia top-down in care programatori sunt concentrati pe functiile generale decit
pe detalii cum aceste functii sa fie implimentate. Cind programatori gindesc si programeaza in modul top-down ei pot cu usurinta
duce la bun sfirsit proiecte uriase fara a avea probleme de cod.
Astfel programul definit anterior arata astfel in acest caz:
TOP LEVEL
Facem curatenie in sufragerie
Facem curatenie in bucatarie
Facem curatenie in baie
SECOND LEVEL
Facem curatenie in sufragerie
START
Dute in sufragerie
Curata masuta de cafea
Curata masutele laterale
Curata covorul
END
Confidential
Page 122
3/25/2016
Programarea object-orientated
In programarea orientata pe obiecte va trebui sa gindim la elementele de program ca si obiecte. In cazul unui obiect de
tip fereastra nu trebuie sa stii detalii care se ocupa de modul cum lucreaza aceasta fereastra , si nici nu trebuie sa cunoasti
cimpurile private ale ferestrei. Ceea ce trebuie sa stii este modul cum se cheama aceste functii care fac acel obiect sa
functioneze. Sa consideram masina pe care am discutat anterior, pentru a conduce aceasta masina nu trebuie sa cunosti cum
merge masina, trebuie sa stii care sunt procedurile necesare pentru a conduce masina, ce este sub capota si cum functioneaza nu
este treaba ta ( si chiar sunt uni care se incumeta sa faca si acest lucru daca vor merge la un mecanic acela va trebui mai intii sa
verifice ce au facut acestia prima data).
Dar OOP este in ceea mai mare parte un mod de a ascunde detaliile de programare. Pentru a intelege acest lucru va
trebui sa intelegem urmatoarele sectiuni: incapsulare, mostenirea si polimorfism.
Confidential
Page 123
3/25/2016
Incapsularea
O diferenta majora intre modul de programare structurat si programarea orientata pe obiecte este data de propietatea obiectelor
numita incapsulare. Aceasta ne permite sa ascundem in interiorul unui obiect atit cimpurile de date cit si metodele care actioneaza
asupra acestor date (de fapt cimpurile de date si metoda sunt doua elemente principale a unui obiect in limbajul de programare
Java). Dupa ce ai realizat acest lucru vei putea controla accesul la date, sa fortezi programele sa cheme si sa modifice date numai
prin interfata obiectului. In proiectarea orientata-obiecte datele unui obiect au statutul de privat pentru acel obiect. Alte parti ale
programului nu trebuie sa aiba acces la datele obiectului. Cum difera modul de a ascunde date fata de programarea structurala
anterioara programari obiect. Daca o problema de acest tip apare atunci este necesar ca datele unei functii sa fie accesate de alte
functii. Un mod de a realiza acest lucru este de a permite altor functii de a accesa aceste date declarindule ca fiind date globale.
Se pare ca va trebui sa ducem acest mod de a trasmite date pe un alt nivel acest lucru se realizeaza cu ajutorul metodei de
incapsulare care ne permit ca date ale membrilor unui obiect sa fie globale pentru obiect si sa poate fi acesate de metodele
obiectului, desi ele nu sunt variabile globale ele fiind locale deoarece sunt utilizate numai in interiorul obiectului.
Un obiect este la fel ca o instanta a unei tip de data. Spre exemplu atunci cind declari o variabila de tip int, tu creezi on
instanta a tipului de data int. O clasa este la fel ca tipul de data care este data in documentatie si pe care se bazeaza un obiect.
Cind tu ai nevoie de un nou obiect in programul tau, tu creezi o clasa, care este template pentru obiect. Atunci, in programul
tau , tu creezi instante ale clasei respective. Aceste instante se numesc obiecte. Clasele nu sunt mai mult decit date de tipul userdefined, Astfel cu orice tip de data tu poti sa ai cit de multe instante vrei tu. Spre exemplu, daca vrei sa ai mai multe ferestre
afisate la un moment dat fiecare cu continutul ei fiecare va fi o instanta a obiectului window. Ginditiva de asemenea la tipul int
este absurd sa te gindesti la un program care are numai un intreg. Poti sa declari multe date de tip int. Este absurd sa gindesti ca
un program care are numai un intreg, poti sa declari cite date de tipul int vrei atitea cite iti sunt necesare. Acelasi lucru se intimpla
si clasele. Dupa ce ai definit o clasa noua, poti sa creezi cite instante vrei pentru clasa respectiva, fiecare dintre acestea pot avea
acess total la metodele claselor anterioare si poate sa copieze datele membrilor.
Mostenirea ne permite sa creem o clasa care este similara cu o clasa definita anterior, dar una care sa aiba propietati
personale. Sa consideram cazul unui program care simuleaza functionarea unei masini. Sa presupunem ca aveam o clasa pentru o
masina obisnuita dar iti trebuie o clasa pentru o masina de viteza ceea ce trebuie facut in programarea structurala ar fi trebuit sa
modificam codul sursa pentru a permite acest lucru si s-ar putea ajunge la baguri dupa modificari. Pentru a indeparta aceasta
problema se poate regindi problema in modul obiect-orientat: Se creeaza o clasa mostenitoare, care va prelua toate datele si
metodele de la clasa anterioara si sa se adauge nou cod pentru functia noua acesteia testindu-l numai pe acesta. In ceea ce
priveste modul in care se face mostenirea o sa vedem ulterior ca exista mai multe moduri cum ar fi : public, private si protected.
De fapt mostenirea trebuie privita la fel cu ceea ce se intimpla la fiinta umana atunci cind apar copii, o parte din
caracteristicile parintilor sunt mostenite de copii, dar copii pot avea la rindul lor caracteristici noi . In programarea orientata pe
obiecte se poate gindi ca fiind parinte o clasa de baza si copil o clasa derivata (vom discuta aceste tipuri in viitor).
Polimorfismul este o alta functie importanta in programarea orientata pe obiecte. Utilizind polimorfism, poti sa creezi
noi obiecte care sa aiba acelasi functii ca si obiectul de baza dar sa sa realizeze una sau mai multe functii altfel decit baza. Spre
exemplu sa consideram ca avem un obiect care deseneaza un cerc pe ecran, prin polimorfism vei dori sa creezi un alt obiect care
sa deseneze un dreptunghi. Se va realiza acest lucru prin modificarea metodei care deseneaza forma pe ecran. Atit primul obiect
cel care ne permite sa desenam un cerc cit si cel de-al doilea obiect care ne permite sa desenam un dreptunghi au o aceeasi
metoda de desenare care are acelasi nume DrawShape() dar realizeaza desenul in moduri diferite.
Desi nu stiai sa folosesti clasele Java pina ieri in aceasta carte, este timpul potrivit sa te uiti la conceptul de OOP in
modul general. Sa consideram exemplu cu masina pe care l-am considerat anterior, acesta poate fi considerat un obiect la care
putem gindi caracteristicile sale fiind: directia, pozitia si viteza si care pot fi acctionate folosind volanul, acceleratia si frina si in
termeni ale clasei directia, pozitia si viteza sunt cimpuri de date iar volanul, accelaratia si frina sunt metodele clasei.
In acest caz clasa masina ar arata astfel :
class Masina { data directie; data pozitie; data viteza; method Volan(); method ApasaAcceleratia();
method ApasaFrina(); }
care are trei date directia in care merge, pozitia unde se afla si viteza cu care se misca asupra carora se poate actiona cu
urmatoarele metode Volan() care va schimba directia de mers, ApasaAcceleratia() care va mari viteza cu care se deplaseaza si
Confidential
Page 124
3/25/2016
ApasaFrina() care va micsora viteza masini. Data pozitie este afectata de toate cele trei metode atit de metoda Volan() care
schimba directia masini cit si de functiile ApasaAccelaratia() si ApasaFrina() care maresc si micsoreaza viteza.
Cimpurile de date si metodele sunt incapsulate in interiorul clasei. Mai mult cimpurile de date sunt private pentru clasa
ceea ce inseamna ca ele nu pot fi direct accesate din exteriorul clasei, numai cele trei metode definite pot acesa datele clasei.
Acum sa presupunem ca vrem sa creem o noua masina care are o cutie de viteza speciala, vom folosi proprietatea de mostenire
pentru a deriva noua clasa din clasa de baza.
class Autobuz inherits from Masina
{
method Pass();
}
Vei ramine surprins sa vezi cit de mica este noua clasa . Este mica pentru ca implicit mosteneste toate cimpurile de date
si metodele de la clasa de baza Masina. Asta inseamana ca clasa Autobuz are o metoda numita Pass(), dar are de asemenea si date
cum ar fi : directie; pozitie si viteaza si metode Volan(); ApasaAcceleratia(); ApasaFrina(); care au fost mostenite de la clasa
Masina.
Ultimul concept al programari orientate pe obiecte pe care il vom considera este polimerfismul, sa presupunem ca v-ati
decis sa creati un alt tip de masina care are acelasi caracteristici ca si clasa Autobuz , cu deosebirea ca este mai rapida decit
aceasta . Acest lucru se rezolva ca mai jos:
class SUV inherits from Autobuz
{
method Pass();
}
Se observa ca la fel ca si clasa Autobuz si clasa SUV are o metoda Pass() care acelasi nume dar care este diferita in
cazul celor doua masini datorita faptului ca viteza clasei SUV este de doua ori mai mare decit a clasei Autobuz. Se observa ca in
cazul clasei SUV aceasta mosteneste functiile clasei Autobuz care la rindul ei mosteneste functiile clasei Masina deci in cazul
clasei SUV vom intilni de asemenea si date cum ar fi : directie; pozitie si viteaza si metode Volan(); ApasaAcceleratia();
ApasaFrina(). Vom vedea in cadru acestui curs ca exista moduri care sa ne permita sa controlam mostenirea unei clase de catre
alta clasa.
Constante si Variabile
Este un lucru care il are orice computer in comun, modul in care proceseaza datele de input si produce date de output
bazindu-se pe datele de input. Deoarece datele sunt foarte importante pentru un program, este motivul principal pentru care
exista o multime de moduri pentru a stora datele in asa fel incit programele sa poata procesa corect si eficient aceste date. Pentru
a pastra legatura datelor va trebui sa folosim constante si variabile.
Constantele
Intr-un program prin constante se definesc parametrii care nu isi schimba valoarea de a lungul executie programului.
Sa presupunem ca avem un program care calculeaza salariile si fiecare valoare este inmultita cu un parametru care se numeste
taxa de vinzare si care sa zicem ca are valoare de 6% . Aceasta valoare apare in program de foarte multe ori asa ca pentru a
modifica aceasta valoare va trebui sa mergem in program si sa schimbam valoarea respectiva. Dar s-ar putea sa apara probleme
datorita faptului ca intr-un loc sa uitam sa modificam aceea valoare lucru care ar duce la bag-uri in programul nostru.
De aceea au fost create constantele care se definesc odata la inceputul programului si apoi se foloseste valoarea lor simbolica ce
avem de facut va fi sa schimbam valoarea respectiva la inceputul programului pentru a se modifica intreg programul.
final float TVA = 0.18;
Mai jos este prezentat modul in care constanta TVA este definita .
Engineering and Drafting Service SRL
Bulevardul Decebal Bl. U12 sc. 1 ap.10 Dolj Craiova 1100 011-40-51-437231 ecad@ecadro.com
Confidential
Page 125
3/25/2016
Variabile
Am vazut ca in cazul constantelor acestea au decit o anumita valoare pe cind variabile au o valoare numerica si o
valoare simbolica astfel ca in cadru aceluiasi program valoarea variabilei poate fi modificata in urma calculelor.
taxa=pret * TVA;
In exemplu de mai sus variabila taxa este creata cu scopul de mentine ce s-a obtinut in urma calcului din partea dreapta a
semnului egal .
Sa presupunem ca cineva vine intr-un magazin si cumpara un anumit lucru atunci costul acesteia va fi :
total = pret + pret*TVA; sau poate fi scris si astfel total = pret * (1 + TVA)
se observa in exemplu de mai sus ca atit TVA cit si pret si total sunt variabile ce preiau date ce au fost calculate in
vederea stocarii acestora.
Alegind cu grija numele vcariabelelor , potti sa creezi programele ca fiind documentate ele insa-si, care inseamna ca
liniile de program insasi va spune celui care va citi acest program ce face acel program.
Bineinteles ca sunt reguli care trebuie avute in vedere atunci cind numit variabelele si constantele, nu putem doar sa
apasam o multime de caractere de la tastatura si sa credem ca Java o sa le accepte, Fiecare Java nume trebuie sa inceapa cu una
din caracterele : A-Z; a-z; $; literele care urmeaza dupa prima litera pot fi luate din urmatoarele multimii: A-Z; a-z; $; 0-9;. Se
observa ca setul al doilea de caractere seamna cu primul cu diferenta ca apare in plus multimea 0-9;
Pe baza regulei de mai sus urmatoarele nume de variabile (indentificatori) sunt corectii:
-
number
number2
amount_of_sale
$amount
Exemplu
Sa consideram cazul unui garaj pentru care vrem sa calculam spatiul liber avind in vedere ca numarul total de spoturi de
parcare este 100, iar in garajul respectiv pot fi parcate camioane, masini si van-uri. Primul lucru pe care trebuie sa il luam in
calcul este sa vedem care din aceste variabile poate fi eligibila pentru constanta, se observa ca numarul de spoturi de parcare al
garajului este singurul care indeplineste conditia unei constante si va fi definita in felul urmator:
final int numar_spot_parcare;
//
int este cuvint cheie care ne da tipul de variabila pe care il folosim in cazul de fata integer;
total_vehicule_parcate = camioane + masini + van;
numar_spoturi_libere = numar_spot_parcare total_vehicule_parcate;
Confidential
Page 126
3/25/2016
Se observa cum numele variabelor si constantelor a fost ales in asa fel incit sa fie usor citibil conform regulei definite
anterior si nu mai este necesar sa inseram linii de comentariu.
Tipurile de date
Java are opt tipuri diferite de date, toate reprezentind diferite valori pentru un program. Aceste tipuri sunt: byte, short,
int, long, float, double, char and boolean si o sa le studiem pe fiecare in parte.
Confidential
Page 127
3/25/2016
care putem alege un numar de tipul double este : -1.79769313486232 x 10308 la 1.79769313486232 x 10308. Pentru a
defini un numar de tipul double putem folosi urmatoarele definitii:
double nume_variabila; sau double nume_variabila = valoare; La fel ca si variabilele de tip float si cele double au o
litera care urmeaza valori variabilei aceasta litera este D sau d . Vom considera in continuare citeva exemple de numere
double precizie 3.14d, 3.34545d sau 3.34565e2d. La fel ca si in cazul numerelor de tip intreg trebuie avut in vedere ca
este bine sa se foloseasca tipuri de date cit mai mici pentru a micsora cantitatea de memorie necesara si numai apoi sa se
treaca la un tip de varibila imediat urmator superior. Numere de tip double nu ar trebui folosite decit daca s-ar proiecta
programe de modelare 3D .
Confidential
Page 128
3/25/2016