Giáo trình Lập trình mạng (Phần 2)

Chƣơng 3: LẬP TRÌNH SCRIPT  
3.1. Javascript  
3.1.1. Giới thiệu Javascript  
JavaScript là ngôn ngữ dƣới dng script có thgn vi các file HTML. Nó không  
đƣợc biên dịch mà đƣợc trình duyt din dch. Không ging Java phi chuyn thành các  
mã để biên dch, trình duyệt đọc JavaScript dƣới dng mã ngun. Chính vì vy Chúng ta có  
thddàng hc JavaScript qua ví dbi vì Chúng ta có ththy cách sdng JavaScript  
trên các trang Web.  
JavaScript là ngôn ngdựa trên đối tƣợng, có nghĩa là bao gồm nhiu kiểu đối tƣợng,  
ví dụ đối tƣợng Math vi tt ccác chức năng toán học. Tuy vy JavaScript không là ngôn  
ngữ hƣớng đối tƣợng nhƣ C++ hay Java do không hỗ trcác lp hay tính tha kế.  
JavaScript có thể đáp ứng các skiện nhƣ tải hay loi bcác form. Khả năng này cho  
phép JavaScript trthành mt ngôn ngữ script động.  
Ging với HTML và Java, JavaScript đƣợc thiết kế độc lp vi hệ điều hành. Nó có  
thchy trên bt khệ điều hành nào có trình duyt htrJavaScript. Ngoài ra JavaScript  
ging Java khía cnh an ninh: JavaScript không thể đọc và viết vào file của ngƣời dùng.  
Các trình duyệt web nhƣ Nescape Navigator 2.0 trở đi có thể hin thnhng câu lnh  
JavaScript đƣợc nhúng vào trang HTML. Khi trình duyt yêu cu mt trang, server sgi  
đầy đủ ni dung của trang đó, bao gồm cHTML và các câu lnh JavaScript qua mng ti  
client. Client sẽ đọc trang đó từ đầu đến cui, hin thcác kết quca HTML và xlý các  
câu lnh JavaScript khi nào chúng xut hin.  
Các câu lệnh JavaScript đƣợc nhúng trong mt trang HTML có thtrli cho các sự  
kin của ngƣời sdụng nhƣ kích chuột, nhp vào một form và điều hƣớng trang. Ví dụ  
Chúng ta có thkim tra các giá trthông tin mà ngƣời sdụng đƣa vào mà không cần đến  
bt cmt quá trình truyn trên mng nào. Trang HTML với JavaScript đƣợc nhúng sẽ  
kim tra các giá trị đƣợc đƣa vào và sẽ thông báo với ngƣời sdng khi giá trị đƣa vào là  
không hp l.  
Mục đích của phn này là gii thiu vngôn nglập trình JavaScript để Chúng ta có  
thviết các script vào file HTML ca mình.  
3.1.2. Nhúng Javascript trong trang web  
Chúng ta có thnhúng JavaScript vào mt file HTML theo mt trong các cách sau  
đây:  
- Sdng các câu lnh và các hàm trong cp th<SCRIPT>  
- Sdng các file ngun JavaScript  
- Sdng mt biu thc JavaScript làm giá trca mt thuc tính HTML  
83  
- Sdng thskin (event handlers) trong mt thẻ HTML nào đó  
Trong đó, sử dng cp th<SCRIPT>...</SCRIPT> và nhúng mt file ngun  
JavaScript là đƣc sdng nhiều hơn cả.  
Sdng thSCRIPT  
Script đƣợc đƣa vào file HTML bằng cách sdng cp th<SCRIPT> và  
<\SCRIPT>. Các th<SCRIPT> có thxut hin trong phn <HEAD> hay <BODY> ca  
file HTML. Nếu đặt trong phn <HEAD>, nó sẽ đƣợc ti và sẵn sàng trƣớc khi phn còn  
li của văn bản đƣợc ti.  
Thuc tính duy nhất đƣợc định nghĩa hiện thi cho th<SCRIPT> là  
―LANGUAGE=― dùng để xác định ngôn ngữ script đƣợc sdng. Có hai giá trị đƣợc định  
nghĩa là "JavaScript" và "VBScript". Với chƣơng trình viết bng JavaScript Chúng ta sử  
dng cú pháp sau :  
<SCRIPT LANGUAGE=”JavaScript”>  
// INSERT ALL JavaScript HERE  
</SCRIPT>  
Điểm khác nhau gia cú pháp viết các ghi chú gia HTML và JavaScript là cho phép  
Chúng ta n các mã JavaScript trong các ghi chú của file HTML, để các trình duyệt cũ  
không htrcho JavaScript có thể đọc đƣợc nó nhƣ trong ví dụ sau đây:  
<SCRIPT LANGUAGE=”JavaScript”>  
<!-- From here the JavaScript code hidden  
// INSERT ALL JavaScript HERE  
// This is where the hidden ends -->  
</SCRIPT>  
Dòng cui cùng ca script cn có dấu // để trình duyt không din dịch dòng này dƣới  
dng mã JavaScript. Các ví dụ trong chƣơng này không chứa đặc điểm n ca JavaScript  
để mã có thdhiểu hơn.  
Sdng mt file ngun JavaScript  
Thuc tính SRC ca th<SCRIPT> cho phép Chúng ta chrõ file ngun JavaScript  
đƣợc sdụng (dùng phƣơng pháp này hay hơn nhúng trực tiếp một đoạn lnh JavaScript  
vào trang HTML).  
Cú pháp:  
<SCRIPT SRC="file_name.js">  
....  
</SCRIPT>  
Thuc tính này ry hu dng cho vic chia scác hàm dùng chung cho nhiu trang  
khác nhau. Các câu lnh JavaScript nm trong cp th<SCRIPT> và </SCRIPT> có cha  
84  
thuc tinh SRC trkhi nó có li. Ví dChúng ta muốn đƣa dòng lệnh sau vào gia cp thẻ  
<SCRIPT SRC="..."> và </SCRIPT>:  
document.write("Không tìm thấy file JS đƣa vào!");  
Thuc tính SRC có thể đƣợc định rõ bằng địa chURL, các liên kết hoặc các đƣờng  
dn tuyệt đi, ví d:  
Các file JavaScript bên ngoài không đƣợc cha bt kthHTML nào. Chúng chỉ  
đƣợc cha các câu lệnh JavaScript và định nghĩa hàm.  
Tên file ca các hàm JavaScript bên ngoài cần có đuôi .js, và server sẽ phi ánh xạ  
đuôi .js đó tới kiu MIME application/x-javascript. Đó là những gì mà server gi trli  
phn Header của file HTML. Để ánh xạ đuôi này vào kiểu MIME, ta thêm dòng sau vào  
file mime.types trong đƣờng dn cu hình của server, sau đó khởi động li server:  
type=application/x-javascript  
Nếu server không ánh xạ đƣợc đuôi .js tới kiu MIME application/x-javascript ,  
Navigator stải file JavaScript đƣợc chra trong thuc tính SRC về không đúng cách.  
Trong ví dsau, hàm bar có cha xâu "left" nm trong mt cp du nháy kép:  
function bar(widthPct)  
{
document.write(" <HR ALIGN='LEFT' WIDTH="+widthPct+"%>")  
}
3.1.3. Cách đặt biểu thức cho các thuộc tính của thẻ HTML  
Chúng ta có thdùng biu thc JavaScript làm giá trcho thuc tính ca thHTML.  
Các giá trị đó đƣợc thc hin một cách động mỗi khi trang đƣợc trình duyt ti vào. Cú  
pháp nhƣ sau:  
& {expression};  
Trong đó expression là biểu thc JavaScript sẽ đƣợc thc hin.  
Chng hn ta có thể định nghĩa mt biến chứa độ rng. Chúng ta có thdùng biến này  
để xác định độ rng ca một đƣờng kngang trên trang Web. Trong ví dụ sau đây, giá trị  
độ rộng đƣợc đặt là 10:  
Ví d3.1: tạo fiel Example.html nhƣ sau  
<HTML>  
<HEAD>  
<SCRIPT>  
var linewidth = 10;  
</SCRIPT>  
<BODY>  
85  
<H2>Đăt biểu thc cho các thuc tính ca HTML</H2>  
<HR width="&{linewidth};%" align = "left">  
</BODY>  
</HTML>  
Khi mã đƣợc thc thi, thì phn tHR sdùng giá trca biến linewidth nhƣ minh họa  
trong hình sau:  
Hình 3.1. Kết quchy ví d3.1  
3.1.4. Dùng Javascript cho trình xlí skin  
JavaScript là ngôn ngữ định hƣớng skiện, nghĩa là sẽ phn ứng trƣớc các skin  
xác định trƣớc nhƣ kích chuột hay ti một văn bản. Mt skin có thgây ra vic thc  
hin một đoạn mã lnh (gọi là các Chƣơng triình xử lý skin) giúp cho chƣơng trình có  
thphn ng mt cách thích hp.  
Event Handler  
Một đoạn mã hay một hàm đƣợc thc hiện để phn ứng trƣớc mt skin gi là  
Chƣơng trình xử lý skiện. Chƣơng trình xử lý skiện đƣợc xác định là mt thuc tính  
ca mt thHTML:  
tagName eventHandler = "JavaScript Code or Function"  
Ví dsau gi hàm CheckAge() mi khi giá trcủa trƣờng văn bản thay đổi:  
INPUT TYPE=TEXT NAME="AGE" onChange="CheckAge()"  
Đoạn mã của Chƣơng trình xử lý skin không là mt hàm; nó là các lnh ca  
JavaScript cách nhau bng du chm phy. Tuy nhiên cho mục đích viết thành các module  
nên viết dƣới dng các hàm.  
3.1.5. Các kiểu dữ liệu  
Khác vi C++ hay Java, JavaScript là ngôn ngữ có tính định kiu thấp. Điều này có  
nghĩa là không phải chra kiu dliu khi khai báo biến. Kiu dliệu đƣợc tự động  
chuyn thành kiu phù hp khi cn thiết.  
Ví d3.2: file Variable.Html:  
<HTML>  
86  
<HEAD>  
<TITLE> Datatype Example </TITLE>  
<SCRIPT LANGUAGE= "JavaScript">  
var fruit='apples';  
var numfruit=12;  
numfruit = numfruit + 20;  
var temp ="There are " + numfruit + " " + ".";  
document.write(temp);  
</SCRIPT>  
</HEAD>  
<BODY>  
</BODY>  
</HTML>  
Các trình duyt htrJavaScript sxlý chính xác ví dụ trên và đƣa ra kết quả dƣới đây:  
Trình din dch JavaScript sxem biến numfruit có kiu nguyên khi cng vi 20 và  
có kiu chui khi kết hp vi biến temp.  
Trong JavaScript, có bn kiu dliu sau đây: kiểu snguyên, kiu du phẩy động,  
kiu logic và kiu chui.  
Kiu nguyên (Interger)  
Snguyên có thể đƣc biu din theo ba cách:  
- Hệ cơ số 10 (hthp phân) - có thbiu din số nguyên theo cơ số 10, chú ý  
rng chsố đu tiên phi khác 0.  
- Hệ cơ s8 (hbát phân) - snguyên có thbiu diễn dƣới dng bát phân vi  
chsố đầu tiên là s0.  
- Hệ cơ số 16 (hthp lc phân) - snguyên có thbiu diễn dƣới dng thp lc  
phân vi hai chsố đầu tiên là 0x.  
Kiu du phẩy động (Floating Point)  
Mt literal có kiu du phẩy đng có 4 thành phn sau:  
- Phn nguyên thp phân.  
- Du chm thp phân (.).  
- Phần dƣ.  
- Phần mũ.  
87  
Để phân bit kiu du phẩy động vi kiu snguyên, phi có ít nht mt chstheo  
sau du chm hay E. Ví d:  
9.87  
-0.85E4  
9.87E14  
.98E-3  
Kiu logic (Boolean)  
Kiểu logic đƣợc sdụng để chỉ hai điều kiện : đúng hoặc sai. Min giá trca kiu  
này chcó hai giá tr:  
- true.  
- false.  
Kiu chui (String)  
Mt literal kiu chuỗi đƣợc biu din bi không hay nhiu ký tự đƣợc đặt trong cp  
du " ... " hay '... '. Ví d:  
“The dog ran up the tree”  
The dog barked  
“100”  
Để biu din du nháy kép ( " ), trong chui sdng ( \" ), ví d:  
document.write(“ \”This text inside quotes.\” ”);  
3.1.6. Các toán tử  
Toán tử đƣợc sdụng để thc hin một phép toán nào đó trên dliu. Mt toán tcó  
thtrli mt giá trkiu s, kiu chui hay kiu logic. Các toán ttrong JavaScript có thể  
đƣợc nhóm thành các loại sau đây: gán, so sánh, shc, chui, logic logic bitwise.  
Gán  
Toán tgán là du bng (=) nhm thc hin vic gán giá trca toán hng bên phi  
cho toán hng bên trái. Bên cạnh đó JavaScript còn hỗ trmt skiu toán tgán rút gn.  
Kiểu gán thông thường  
x = x + y  
Kiu gán rút gn  
x + = y  
x = x y  
x - = y  
x = x * y  
x * = y  
x = x / y  
x / = y  
x = x % y  
x % = y  
So sánh  
Ngƣời ta sdng toán tử so sánh để so sánh hai toán hng và trli giá trị đúng hay  
sai phthuc vào kết quả so sánh. Sau đây là một stoán tso sánh trong JavaScript:  
88  
== Trli giá trị đúng nếu toán hng bên trái bng toán hng bên phi  
!= Trli giá trị đúng nếu toán hng bên trái khác toán hng bên phi  
>
Trli giá trị đúng nếu toán hng bên trái lớn hơn toán hạng bên phi  
>= Trli giá trị đúng nếu toán hng bên trái lớn hơn hoặc bng toán hng  
bên phi  
<
Trli giá trị đúng nếu toán hng bên trái nhỏ hơn toán hạng bên phi  
<= Trli giá trị đúng nếu toán hng bên trái nhỏ hơn hoặc bng toán hng  
bên phi  
Shc  
Bên cnh các toán tcng (+), tr(-), nhân (*), chia (/) thông thƣờng, JavaScript còn  
htrcác toán tử sau đây:  
var1% var2  
Toán tphần dƣ, trả li phần dƣ khi chia var1 cho var2  
Toán tphủ đnh, có giá trphủ đnh toán hng  
-
var++  
var--  
Toán tử này tăng var lên 1 (có thể biu din là ++var)  
Toán tnày giảm var đi 1 (có thể biu din là --var)  
Chui  
Khi đƣợc sdng vi chui, toán t+ đƣợc coi là kết hp hai chui.  
ví d:  
"abc" + "xyz" được "abcxyz"  
Logic  
JavaScript htrcác toán tử logic sau đây:  
expr1 && expr2  
Là toán tlogic AND, trli giá trị đúng nếu cả  
expr1 và expr2 cùng đúng.  
expr1 || expr2  
! expr  
Là toán tlogic OR, trli giá trị đúng nếu ít nht  
một trong hai expr1 và expr2 đúng.  
Là toán tlogic NOT phủ định giá trca expr.  
Bitwise  
Vi các toán tử thao tác trên bit, đầu tiên giá trị đƣợc chuyển dƣới dng snguyên 32  
bit, sau đó lần lƣợt thc hin các phép toán trên tng bit.  
& Toán tbitwise AND, trli giá tr1 nếu chai bit cùng là 1.  
|
Toán tbitwise OR, trli giá tr1 nếu mt trong hai bit là 1.  
89  
^
Toán tbitwise XOR, trli giá tr1 nếu hai bit có giá trkhác nhau  
Ngoài ra còn có mt stoán tdch chuyn bitwise. Giá trị đƣợc chuyn thành số  
nguyên 32 bit trƣớc khi dch chuyn. Sau khi dch chuyn, giá trlại đƣợc chuyn thành  
kiu ca toán hạng bên trái. Sau đây là các toán tử dch chuyn:  
<<  
Toán tdch trái. Dch chuyn toán hng trái sang trái mt số lƣợng bit bng  
toán hng phi. Các bit bchuyn sang trái bmt và 0 thay vào phía bên  
phi. Ví d: 4<<2 trthành 16 (snhphân 100 trthành snhphân 10000)  
Toán tdch phi. Dch chuyn toán hng trái sang phi mt số lƣợng bit  
bng toán hng phi. Các bit bchuyn sang phi bmt và du ca toán  
hạng bên trái đƣợc ginguyên. Ví d: 16>>2 trthành 4 (snhphân 10000  
trthành snhphân 100)  
>>  
>>> Toán tdch phi có chèn 0. Dch chuyn toán hng trái sang phi mt số  
lƣợng bit bng toán hng phi. Bit dấu đƣợc dch chuyn ttrái (ging >>).  
Những bit đƣợc dch sang phi bị xoá đi. Ví dụ: -8>>>2 trthành  
1073741822 (bi các bit dấu đã trở thành mt phn ca s). Tt nhiên vi số  
dƣơng kết quca toán t>> và >>> là ging nhau.  
Có mt stoán tdch chuyn bitwise rút gn:  
Kiểu bitwise thông thường  
x = x << y  
Kiu bitwise rút gn  
x << = y  
x = x >> y  
x - >> y  
x = x >>> y  
x = x & y  
x >>> = y  
x & = y  
x = x ^ y  
x ^ = y  
x = x | y  
x | = y  
3.1.7. Các biểu thức  
Tp hp các literal, biến và các toán tnhằm đánh giá một giá trị nào đó đƣợc gi là  
mt biu thc (expression). Về cơ bản có ba kiu biu thc trong JavaScript:  
- Shc: Nhằm để lƣợng giá giá trs. Ví d(3+4)+(84.5/3) đƣợc đánh giá  
bng 197.1666666667.  
- Chui: Nhằm để đánh giá chuỗi. Ví d"The dog barked" + barktone + "!" là  
The dog barked ferociously!.  
- Logic: Nhằm đánh giá giá trị logic. Ví dtemp>32 có thnhn giá trsai.  
JavaScript cũng htrbiu thức điều kiện, cú pháp nhƣ sau:  
(condition) ? valTrue : valFalse  
90  
Nếu điều kin condition đƣợc đánh giá là đúng, biểu thc nhn giá trvalTrue,  
ngƣợc li nhn giá trvalFalse. Ví d: state = (temp>32) ? "liquid" : "solid"  
Trong ví dnày biến state đƣợc gán giá tr"liquid" nếu giá trca biến temp ln  
hơn 32; trong trƣng hợp ngƣợc li nó nhn giá tr"solid".  
3.1.8. Khai báo biến, mảng  
Tên biến trong JavaScript phi bắt đầu bng chhay du gạch dƣới. Các chsố  
không đƣợc sdng để mở đầu tên mt biến nhƣng có thsdng sau ký tự đầu tiên.  
Phm vi ca biến có thlà mt trong hai kiu sau:  
- Biến toàn cc: Có thể đƣợc truy cp tbt kỳ đâu trong ứng dng.  
đƣợc khai báo nhƣ sau :  
x = 0;  
- Biến cc b: Chỉ đƣợc truy cp trong phạm vi chƣơng trình mà nó khai báo. Biến  
cc bộ đƣợc khai báo trong mt hàm vi từ khoá var nhƣ sau:  
var x = 0;  
Biến toàn cc có thsdng từ khoá var, tuy nhiên điều này không thc scn thiết.  
Mng (Array)  
Mc dù JavaScript không htrcu trúc dliu mảng nhƣng Netscape tạo ra phƣơng  
thc cho phép Chúng ta tto ra các hàm khi to mảng nhƣ sau:  
function InitArray(NumElements){  
this.length = numElements;  
for (var x=1; x<=numElements; x++){  
this[x]=0  
}
return this;  
}
Nó to ra mt mng với kích thƣớc xác định trƣớc và điền các giá tr0. Chú ý rng  
thành phần đầu tiên trong mảng là độ dài mảng và không đƣợc sdng.  
Để to ra mt mảng, khai báo nhƣ sau:  
myArray = new InitArray (10)  
Nó to ra các thành phn từ myArray[1] đến myArray[10] vi giá trlà 0. Giá trcác  
thành phn trong mng có thể đƣợc thay đổi nhƣ sau:  
myArray[1] = "NghAn"  
myArray[2] = "Lào"  
Sau đây là ví dụ đầy đủ:  
<HTML> <HEAD>  
<TITLE> Array Exemple </TITLE>  
91  
<SCRIPT LANGUAGE= "JavaScript">  
function InitArray(numElements) {  
this.length = numElements;  
for (var x=1; x<=numElements; x++){  
this[x]=0  
}
return this;  
}
myArray = new InitArray(10);  
myArray[1] = "NghAn";  
myArray[2] = "Hà Ni";  
document.write(myArray[1] + "<BR>");  
document.write(myArray[2] + "<BR>");  
</SCRIPT>  
</HEAD>  
<BODY> </BODY>  
</HTML>  
3.1.9. Cách lệnh điều kiện  
Câu lệnh điều kiện cho phép chƣơng trình ra quyết định và thc hin công vic nào  
đấy da trên kết quca quyết định. Trong JavaScript, câu lệnh điều kin là if...else  
Câu lnh này cho phép Chúng ta kiểm tra điều kin và thc hin mt nhóm lnh nào  
đấy da trên kết qucủa điều kin va kim tra. Nhóm lnh sau else không bt buc phi  
có, nó cho phép chra nhóm lnh phi thc hin nếu điều kin là sai.  
Cú pháp:  
if ( <điều kin> )  
{
<Công vic 1>  
}
else  
{
<Công vic 2>  
}
Ví d3.3:  
if (x==10){  
document.write(“x bằng 10, đặt li x bằng 0.”);  
x = 0;  
92  
}
else  
document.write(“x không bằng 10.”);  
3.1.10. Các lệnh lặp  
Câu lnh lp thhin vic lặp đi lặp li một đoạn mã cho đến khi biu thức điều kin  
đƣợc đánh giá là đúng. JavaScipt cung cp hai kiu câu lnh lp:  
. for loop  
. while loop  
Vòng lp for  
Vòng lp for thiết lp mt biu thc khởi đầu - initExpr, sau đó lặp một đoạn mã cho  
đến khi biu thức <điều kiện> đƣợc đánh giá là đúng. Sau khi kết thúc mi vòng lp, biu  
thức incrExpr đƣợc đánh giá lại.  
Cú pháp:  
for (<Biu thc khi to>; <điều kin> ; <Biu thc tăng gim>){  
<Công vic>  
}
Ví d3.4:  
<HTML> <HEAD>  
<TITLE>For loop Example </TITLE>  
<SCRIPT LANGUAGE= "JavaScript">  
for (x=1; x<=10 ; x++) {  
y=x*25;  
document.write("x ="+ x +";y= "+ y + "<BR>");  
}
</SCRIPT>  
</HEAD>  
<BODY></BODY>  
</HTML>  
While  
Vòng lp while lp khi lnh chừng nào <điều kiện> còn đƣợc đánh giá là đúng  
Cú pháp:  
while (<điều kin>)  
{
<Công vic>  
}
Ví d3.5:  
93  
x=1;  
while (x<=10){  
y=x*25;  
document.write("x="+x +"; y = "+ y + "<BR>");  
x++;  
}
Kết quca ví dnày giống nhƣ ví dụ trƣc.  
Break  
Câu lệnh break dùng để kết thúc vic thc hin ca vòng lặp for hay while. Chƣơng  
trình đƣợc tiếp tc thc hin ti câu lnh ngay sau chkết thúc ca vòng lp.  
Cú pháp :  
break;  
Đoạn mã sau lặp cho đến khi x lớn hơn hoặc bng 100. Tuy nhiên nếu giá trị x đƣa  
vào vòng lp nhỏ hơn 50, vòng lặp skết thúc  
Ví d3.6:  
while (x<100)  
{
if (x<50) break;  
x++;  
}
Continue  
Lnh continue ging lnh break nhƣng khác ở chvic lặp đƣợc kết thúc và bắt đầu  
từ đầu vòng lặp. Đối vi vòng lp while, lệnh continue điều khin quay lại <điều kin>;  
vi for, lệnh continue điều khin quay li incrExpr.  
Cú pháp :  
Continue;  
Ví d3.7: Đoạn mã sau tăng x từ 0 lên 5, nhy lên 8 và tiếp tục tăng lên 10  
x=0;  
while (x<=10)  
{
document.write(“Giá trị của x là:”+ x+”<BR>”);  
if (x=5)  
{
x=8;  
continue;  
}
94  
x++;  
}
For...In  
Câu lệnh này đƣợc sdụng để lp tt ccác thuc tính (properties) ca một đối  
tƣợng. Tên biến có thlà mt giá trbt k, chcn thiết khi Chúng ta sdng các thuc  
tính trong vòng lp. Ví dsau sminh hoạ điều này  
Cú pháp:  
for (<variable> in <object>)  
{
<Công vic>  
}
Ví d3.8:  
Ví dsau sly ra tt ccác thuc tính của đối tƣợng Window và in ra tên ca mi  
thuc tính. Kết quả đƣợc minh hotrên hình 5.2.  
<HTML>  
<HEAD>  
<TITLE>For in Example </TITLE>  
<SCRIPT LANGUAGE= "JavaScript">  
document.write("The properties of the Window object are: <BR>");  
for (var x in window)  
document.write(" "+ x + ", ");  
</SCRIPT>  
</HEAD>  
<BODY>  
</BODY>  
</HTML>  
3.1.11. Hàm (function)  
JavaScript cũg cho phép sử dng các hàm. Mc dù không nht thiết phi có, song các  
hàm có thcó mt hay nhiu tham struyn vào và mt giá trtrv. Bi vì JavaScript là  
ngôn ngữ có tính định kiu thp nên không cần định nghĩa kiểu tham svà giá trtrvề  
ca hàm. Hàm có thlà thuc tính ca một đối tƣợng, trong trƣờng hợp này nó đƣợc xem  
nhƣ là phƣơng thc của đối tƣợng đó.  
Lệnh function đƣc sdụng để to ra hàm trong JavaScript.  
Cú pháp:  
function fnName([param1],[param2],...,[paramN])  
{
95  
//function statement  
}
Ví d3.9:  
function person(first_name, last_name, age, sex)  
{
this.first_name=first_name;  
this.last_name=last_name;  
this.age=age;  
this.sex=sex;  
this.printStats=printStats;  
}
Các hàm có sn  
JavaScript có mt shàm có sn, gn trc tiếp vào chính ngôn ngvà không nm  
trong một đối tƣợng nào:  
. eval  
. parseInt  
. parseFloat  
Eval  
Hàm này đƣợc sdụng để đánh giá các biểu thc hay lnh. Biu thc, lnh hay các  
đối tƣợng ca thuộc tính đều có thể đƣợc đánh giá. Đặc bit hết sc hữu ích khi đánh giá  
các biu thức do ngƣời dùng đƣa vào (ngƣợc li có thể đánh giá trực tiếp).  
Cú pháp:  
returnval=eval (bt kbiu thc hay lnh hp ltrong Java)  
Parseint  
Hàm này chuyn mt chui sthành snguyên với cơ số là tham sthhai (tham số  
này không bt buộc). Hàm này thƣờng đƣợc sdụng để chuyn các số nguyên sang cơ số  
10 và đảm bo rng các dliệu đƣọc nhập dƣới dng ký tự đƣợc chuyn thành số trƣớc khi  
tính toán. Trong trƣờng hp dliu vào không hp l, hàm parseInt sẽ đọc và chuyn dng  
chuỗi đến vtrí nó tìm thy ký tkhông phi là s. Ngoài ra hàm này còn ct du phy  
đng.  
Cú pháp:  
parseInt (string, [, radix])  
Parsefloat  
Hàm này giống hàm parseInt nhƣng nó chuyển chui thành sbiu diễn dƣới dng  
du phẩy động.  
Cú pháp:  
96  
parseFloat (string)  
3.1.12. Các đối tƣợng trong Javascript  
Nhƣ đã nói JavaScript là ngôn ngữ lp trình dựa trên đối tƣợng, nhƣng không hƣớng  
đối tƣợng bi vì nó không htrcác lớp cũng nhƣ tính thừa kế. Phn này nói về các đối  
tƣợng trong JavaScript và hình 6.1 chỉ ra sơ đồ phân cấp các đối tƣng.  
Trong sơ đồ phân cấp các đối tƣợng của JavaScript, các đối tƣợng con thc slà các  
thuc tính của các đối tƣợng bm. Trong ví dvề chƣơng trình xử lý skin trƣớc đây  
form tên PHIEU_DIEU_TRA là thuc tính của đối tƣợng document và trƣờng text AGE là  
thuc tính của form PHIEU_DIEU_TRA. Để tham chiếu đến giá trca AGE, Chúng ta  
phi sdng: document.PHIEU_DIEU_TRA.AGE.value  
Các đối tƣợng có thuc tính (properties), phƣơng thức (methods), và các chƣơng trình  
xlý skin (event handlers) gn vi chúng. Ví dụ đối tƣợng document có thuc tính title  
phn ánh ni dung ca th<TITLE> ca document. Bên cạnh đó Chúng ta thấy phƣơng  
thức document.write đƣợc sdng trong nhiu ví dụ để đƣa văn bn kết qura document.  
Đối tƣợng cũng có thể có các chƣơng trình xử lý skin. Ví dụ đối tƣợng link có hai  
chƣơng trình xử lý skiện là onClick và onMouseOver. onClick đƣợc gọi khi có đối tƣợng  
link đƣợc kích chut vào, onMouseOver đƣợc gi khi con trchut di chuyn qua link.  
Khi Chúng ta ti mt document xung Navigator, nó sto ra mt số đối tƣợng cùng  
vi nhng giá trcác thuc tính ca chúng da trên file HTML của document đó và một  
vài thông tin cn thiết khác. Nhng đối tƣợng này tn ti mt cách có cp bc và phn ánh  
chính cu trúc của file HTML đó.  
97  
Window  
Texturea  
Text  
navigator  
Plugin  
Mime Type  
Layer  
Link  
FileUpload  
Password  
Hidden  
Submit  
Reset  
Frame  
document  
Location  
History  
Image  
Area  
Anchor  
Applet  
Plugin  
Form  
Radio  
Checkbox  
Button  
Select  
Option  
Hình 3.3. Các đối tƣợng ca JavaScript  
1) Đối tƣợng navigator  
Đối tƣợng này đƣợc sdụng để đạt đƣợc các thông tin vtrình duyệt nhƣ sphiên  
bản. Đối tƣợng này không có phƣơng thức hay chƣơng trình xử lý skin.  
Các thuc tính  
appCodeName Xác định tên mã ni ti ca trình duyt (Atlas).  
AppName  
AppVersion  
userAgent  
Xác định tên trình duyt.  
Xác định thông tin vphiên bn của đối tƣợng navigator.  
Xác định header ca user - agent.  
Ví d3.10: Hin thcác thuc tính của đối tƣợng navigator:  
<HTML>  
<HEAD>  
<TITLE> Navigator Object Exemple </TITLE>  
<SCRIPT LANGUAGE= "JavaScript">  
document.write("appCodeName = "+navigator.appCodeName + "<BR>");  
98  
document.write("appName = "+navigator.appName + "<BR>");  
document.write("appVersion = "+navigator.appVersion + "<BR>");  
document.write("userAgent = "+navigator.userAgent + "<BR>");  
</SCRIPT>  
</HEAD>  
<BODY>  
</BODY>  
</HTML>  
Hình 3.3: Minh hoꢀ cho đối tƣợng Navigator  
2) Đối tƣợng window  
Đối tƣợng window nhƣ đã nói ở trên là đối tƣợng mc cao nhất. Các đối tƣợng  
document, frame, vị trí đều là thuc tính của đối tƣợng window.  
Các thuc tính  
. defaultStatus - Thông báo ngầm định hin thlên trên thanh trng thái ca ca  
sổ  
. Frames - Mảng xác định tt ccác frame trong ca s.  
. Length - Số lƣợng các frame trong ca scha m.  
. Name - Tên ca ca shin thi.  
. Parent - Đối tƣng ca scha mẹ  
. Self - Ca shin thi.  
. Status - Đƣợc sdng cho thông báo tm thi hin thlên trên thanh thng thái  
ca sổ. Đựơc sử dụng để lấy hay đặt li thông báo trạng thái và ghi đè lên  
defaultStatus.  
. Top - Ca sổ ở trên cùng.  
. Window - Ca shin thi.  
Các phƣơng thức  
. alert ("message") -Hin thhp hi thoi vi chui "message" và nút OK.  
99  
. clearTimeout(timeoutID) -Xóa timeout do SetTimeout đặt. SetTimeout trli  
timeoutID  
. windowReference.close -Đóng cửa swindowReference.  
. confirm("message") -Hin thhp hi thoi vi chui "message", nút OK và  
nút Cancel. Trli giá trTrue cho OK và False cho Cancel.  
. [windowVar = ][window]. open("URL", "windowName", ["windowFeatures"] ) -  
Mca smi.  
. prompt ("message" [,"defaultInput"]) - Mmt hp hi thoại để nhn dliu  
vào trƣờng text.  
. TimeoutID = setTimeout(expression,msec) - Đánh giá biểu thc expresion sau  
thi gian msec.  
Ví d3.11: Sdng tên ca skhi gi tới nó nhƣ là đích của mt form submit hoc  
trong mt Hipertext link (thuc tính TARGET ca thFORM và A).  
Trong ví dto ra mt ti ca sthứ hai, nhƣ nút thứ nhất để mmt ca srng,  
sau đó một liên kết sti file doc2.html xung ca smới đó rồi một nút khác dùng để  
đóng của sthhai li, ví dụ này lƣa vào file window.html:  
<HTML>  
<HEAD>  
<TITLE>Frame Example </TITLE>  
</HEAD>  
<BODY>  
<FORM>  
<INPUT  
TYPE="button"  
VALUE="Open  
Second  
Window"  
onClick="msgWindow=window.open('','window2','resizable=no,width=200,height=2  
00')">  
<P>  
<A HREF="doc2.html" TARGET="window2">  
Load a file into window2 </A>  
</P>  
<INPUT TYPE="button" VALUE="Close Second Window"  
onClick="msgWindow.close()">  
</FORM>  
</BODY>  
</HTML>  
100  
Hình 3.4: Minh hoꢀ cho đối tƣợng cửa sổ  
Các chƣơng trình xskin  
onLoad - Xut hin khi ca skết thúc vic ti.  
onUnLoad - Xut hin khi ca sổ đƣợc loi b.  
3) Đối tƣợng Location  
Các thuc tính của đối tƣợng location duy trì các thông tin vURL ca document  
hin thời. Đối tƣợng này hoàn toàn không có các phƣơng thức và chƣơng trình xử lý sự  
kiện đi kèm. Ví d3.12: http:// www.abc.com/ chap1/page2.html#topic3  
Các thuc tính  
hash - Tên anchor ca vtrí hin thi (ví dtopic3).  
Host - Phn hostname:port ca URL (ví dwww.abc.com ). Chú ý rằng đây  
thƣờng là cng ngầm định và ít khi đƣợc chra.  
Hostname - Tên ca host và domain (ví dwww.abc.com ).  
href - Toàn bURL cho document hin ti.  
Pathname - Phần đƣng dn ca URL (ví d/chap1/page2.html).  
Port - Cng truyền thông đƣợc sdụng cho máy tính host, thƣờng là cng  
ngầm đnh.  
Protocol - Giao thức đƣợc sdng (cùng vi du hai chm) (ví dhttp:).  
Search - Câu truy vn tìm kiếm có thể ở cui URL cho các script CGI.  
4) Đối tƣợng Frame  
Mt ca scó thcó mt vài frame. Các frame có thcun một cách độc lp vi  
nhau và mi frame có URL riêng. frame không có các chƣơng trình xử lý skin. Skin  
onLoad và onUnLoad là của đối tƣợng window.  
101  
Các thuc tính  
frames - Mng tt ccác frame trong ca s.  
Name - Thuc tính NAME ca th<FRAME>  
Length - Số lƣợng các frame con trong mt frame.  
Parent - Ca shay frame cha nhóm frame hin thi.  
self - frame hin thi.  
Window - frame hin thi.  
Các phƣơng thức  
. clearTimeout (timeoutID) - Xoá timeout do setTimeout lp. SetTimeout trli  
timeoutID.  
. TimeoutID = setTimeout (expression,msec) - Đánh giá expression sau khi hết  
thi gian msec.  
Sdng frame  
Để to mt frame, ta sdng thFRAMESET. Mục đích của thẻ này là định nghĩa  
mt tp các frame trong mt trang.  
Ví d3.13: to frame  
<HTML>  
<HEAD>  
<TITLE>Frame Example </TITLE>  
<FRAMESET ROWS="90%,10%">  
<FRAMESET COLS="30%,70%">  
<FRAME SRC=CATEGORY.HTM NAME="ListFrame">  
<FRAME SRC=TITLES.HTM NAME="contentFrame">  
</FRAMESET >  
<FRAME SRC=NAVIGATOR.HTM NAME="navigateFrame">  
</FRAMESET >  
</HEAD>  
<BODY> </BODY>  
</HTML>  
Sơ đồ sau hin thcu trúc ca các frame: Cả 3 frame đều trên cùng mt ca scha,  
mc dù 2 trong số các frame đó nằm trong mt frameset khác.  
102  
Tải về để xem bản đầy đủ
pdf 123 trang Thùy Anh 12/05/2022 3460
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình mạng (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_lap_trinh_mang_phan_2.pdf