Ngôn ngữ Javascript

Đây là phiên bản tài liệu đơn giản

Xem phiên bản đầy đủ của tài liệu Ngôn ngữ Javascript

NGÔN NGỮ JAVASCRIPT
Yêu cầu:
 Nắm được các kiểu dữ liệu trong Javascript
 Nắm được các toán tử trong Javascript
 Quản lý các sự kiện
 Nắm được các đối tượng của Javascript : window, document
 Thực hành làm các ví dụ giải các bài toán với Javascript
1. Giới thiệu về ngôn ngữ Javascript
 JavaScript là ngôn ngữ kịch bản dùng để tạo các
client-side scripts và server-side scripts.
 JavaScript làm cho việc tạo các trang Web động và tương tác dễ dàng hơn
 JavaScript là một ngôn ngữ kịch bản được hãng Sun Microsystems và
Netscape phát triển.
 JavaScript được phát triển từ Livescript. Của Netscape
 Các ứng dụng client chạy trên một trình duyệt như Netscape Navigator
hoặc Internet Explorer.
 JavaScript có thể tăng cường tính động và tính tương tác của các trang
web.
– Cung cấp sự tương tác người dùng
– Thay đổi nội dung động
– Xác nhận tính hợp lệ của dữ liệu
2. Chèn JavaScript vào trang HTML
Bạn có thể nhúng JavaScript vào một file HTML theo một trong các cách
sau đây:
 Sử dụng thẻ SCRIPT:
<script language="JavaScript">
<!--
JavaScript statements;
//-->
</script>
 Sử dụng một file JavaScript ở ngoài
<script language="JavaScript" src="filename.js">
</script>
 Sử dụng các biểu thức JavaScript trong các giá trị thuộc tính của thẻ
 Sử dụng trong các trình điều khiển sự kiện
Ví dụ:
1
<HTML>
<HEAD>
<SCRIPT LANGUAGE = "Javascript">
confirm ("Are you Sure?");
alert("OK");
document.write(" Thank You !");
</SCRIPT>
</HEAD>
</HTML>
3. Biến và phân loại biến
Tên biến trong JavaScript phải bắt đầu bằng chữ hay dấu gạch dưới. Các
chữ số không được sử dụng để mở đầu tên một biến nhưng có thể sử dụng sau
ký tự đầu tiên.
Phạm vi của biến có thể là một trong hai kiểu sau:
• Biến toàn cục: Có thể được truy cập từ bất kỳ đâu trong ứng dụng.
được khai báo như sau :
x = 0;
• Biến cục bộ: Chỉ được truy cập trong phạm vi chương trình mà nó khai
báo. Biến cục bộ được khai báo trong một hàm với từ khoá var như sau:
var x = 0;
Biến toàn cục có thể sử dụng từ khoá var, tuy nhiên điều này không thực sự
cần thiết.
4. Các kiểu dữ liệu trong Javascript
 JavaScript có một tập các kiểu dữ liệu.
– Số (number)
– Giá trị logic (boolean)
– Chuỗi (String)
– Giá trị rỗng Null
 Trong JavaScript, hai biến khác kiểu có thể kết hợp với nhau.
ví dụ: A = “ Day la mot so .” + 5
sẽ có kết quả là một chuỗi với giá trị là "Day la mot so . 5"
<HTML>
<HEAD>
<SCRIPT LANGUAGE = "Javascript">
var A = "12" + 7.5;
document.write(A);
</SCRIPT>
</HEAD>
</HTML>
2
Các kiểu dữ liệu nguyên thủy
 Integer – là các hệ thống số thập phân, thập lục phân và nhị phân.
 Floating- point(số thực) – Các số thập phân có phần thập phân sử dụng
“e” or “”E”và theo sau là các số nguyên.
 String – là một chuỗi rỗng hay chuỗi ký tự được đặt trong cặp ngoặc đơn
hoặc ngoặc kép
 Boolean–Kiểu này có hai giá trị: True or False.
 null - Kiểu null chỉ có một giá trị: null. Null hàm ý không có dữ liệu.
5. Các toán tử (operator)
Toán tử được sử dụng để thực hiện một phép toán nào đó trên dữ liệu.
Một toán tử có thể trả lại một giá trị kiểu số, kiểu chuỗi hay kiểu logic. Các
toán tử trong JavaScript có thể được nhóm thành các loại sau đây: gán, so sánh,
số học, chuỗi, logic và logic bitwise.
a) Phép gán
Toán tử gán là dấu bằng (=) nhằm thực hiện việc gán giá trị của toán
hạng bên phải cho toán hạng bên trái. Bên cạnh đó JavaScript còn hỗ trợ một số
kiểu toán tử gán rút gọn.
Kiểu gán thông thường Kiểu gán rút gọn
x = x + y x + = y
x = x - y x - = y
x = x * y x * = y
x = x / y x / = y
x = x % y x % = y
b) Các phép toán số học
Cộng (+), trừ (-), nhân (*), chia (/)
var1% var2 Toán tử phần dư, trả lại phần dư khi chia var1 cho
var2
- Toán tử phủ định, có giá trị phủ định toán hạng
var++ Toán tử này tăng var lên 1 (có thể biểu diễn là +
+var)
var-- Toán tử này giảm var đi 1 (có thể biểu diễn là
--var)
3
c) Các phép so sánh
= = (bằng); != (khác); > ; >= ; < ; <=
d) Phép toán xử lý chuỗi
Khi được sử dụng với chuỗi, toán tử + được coi là kết hợp hai chuỗi,
ví dụ:
"abc" + "xyz" được "abcxyz"
e) Các phép toán logic
JavaScript hỗ trợ các toán tử logic sau đây:
&& (AND) ; || (OR); ! (NOT)
f) Phép bitwise
Với các toán tử thao tác trên bit, đầu tiên giá trị được chuyển dưới dạng
số nguyên 32 bit, sau đó lần lượt thực hiện các phép toán trên từng bit.
& Toán tử bitwise AND, trả lại giá trị 1 nếu cả hai bit cùng là 1.
| Toán tử bitwise OR, trả lại giá trị 1 nếu một trong hai bit là 1.
^ Toán tử bitwise XOR, trả lại giá trị 1 nếu hai bit có giá trị khác nhau
Ngoài ra còn có một số toán tử dịch chuyển bitwise. Giá trị được chuyển
thành số nguyên 32 bit trước khi dịch chuyển. Sau khi dịch chuyển, giá trị lại
được chuyển thành kiểu của toán hạng bên trái. Sau đây là các toán tử dịch
chuyển:
<< Toán tử dịch trái. Dịch chuyển toán hạng trái sang trái một số
lượng bit bằng toán hạng phải. Các bit bị chuyển sang trái bị mất
và 0 thay vào phía bên phải. Ví dụ: 4<<2 trở thành 16 (số nhị phân
100 trở thành số nhị phân 10000)
>> Toán tử dịch phải. Dịch chuyển toán hạng trái sang phải một số
lượng bit bằng toán hạng phải. Các bit bị chuyển sang phải bị mất
và dấu của toán hạng bên trái được giữ nguyên. Ví dụ: 16>>2 trở
thành 4 (số nhị phân 10000 trở thành số nhị phân 100)
>>> Toán tử dịch phải có chèn 0. Dịch chuyển toán hạng trái sang phải
một số lượng bit bằng toán hạng phải. Bit dấu được dịch chuyển từ
trái (giống >>). Những bit được dịch sang phải bị xoá đi. Ví dụ:
-8>>>2 trở thành 1073741822 (bởi các bit dấu đã trở thành một
phần của số). Tất nhiên với số dương kết quả của toán tử >> và
>>> là giống nhau.
Có một số toán tử dịch chuyển bitwise rút gọn:
Kiểu bitwise thông Kiểu bitwise rút gọn
4
thường
x = x << y x << = y
x = x >> y x - >> y
x = x >>> y x >>> = y
x = x & y x & = y
x = x ^ y x ^ = y
x = x | y x | = y
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
var x = 10;
var y = 5;
alert ("The value of x is "
+ x + "The value of y is " + y);
alert("x AND y = " + (x && y));
alert("x OR y = " + (x || y));
alert("NOT x = " + (!x));
</SCRIPT>
</HEAD>
</HTML>
6. Các lệnh có cấu trúc
a) Rẽ nhánh theo điều kiện với if ... else
Cú pháp if ... else dùng trong trường hợp muốn rẽ nhánh theo điều kiện.
Cú pháp này tương đương với nếu x thì làm y, còn nếu không thì làm z. Các
câu lệnh if ... else có thể lồng trong nhau.
Cú pháp:
<script language="JavaScript">
if (biểu_thức_1)
{
khối lệnh được thực hiện nếu biểu thức 1 đúng;
}
else if (biểu_thức_2)
{
khối lệnh được thực hiện nếu biểu thức 2 đúng;
}
else
{
5
khối lệnh được thực hiện nếu cả hai biểu thức trên đều không đúng;
}
</script>
Ví dụ:
<script language="JavaScript">
var x = prompt("Nhập vào giá trị của x:");
x = parseFloat(x);

if (!isNaN(x)) {
if (x > 0)
{
alert("x > 0");
}
else if (x == 0)
{
alert("x = 0");
}
else
{
alert("x < 0");
}
}
else
{
alert("giá trị bạn nhập không phải là một số");
}
</script>
b) Toán tử điều kiện
Toán từ điều kiện còn được biết đến với tên gọi toán tử tam phân. Cú pháp của
toán tử này như sau:
<script language="JavaScript">
điều_kiện ? biểu_thức_đúng : biểu_thức_sai;
</script>
Toán tử này sẽ trả lại giá trị là kết quả của biểu_thức_đúng nếu điều_kiện có
giá trị bool bằng true, ngược lại nó sẽ trả lại giá trị bằng biểu_thức_sai.
6
Ví dụ:
<html>
<head><head>
<body>
<script language="javascript">
var a=9;
var b=5;
a>b?document.write(a):document.write(b);
</script>
<BODY>
</html>
c) Lệnh switch
Cú pháp switch cũng là cú pháp điều kiện như if ... else hay toán tử tam phân.
Tuy nhiên, cú pháp switch thường được dùng khi chỉ cần so sánh bằng với số
lượng kết quả cần kiểm tra lớn. Cách sử dụng cú pháp switch:
<script language="JavaScript">
switch (biểu_thức_điều_kiện)
{
case kết_quả_1:
khối lệnh cần thực hiện nếu biểu_thức_điều_kiện bằng kết_quả_1;
break;
case kết_quả_2:
khối lệnh cần thực hiện néu biểu_thức_điều_kiện bằng kết_quả_2;
break;
default:
khối lệnh cần thực hiện nếu biểu_thức_điều_kiện cho ra một kết quả
khác;
}
</script>
Sau mỗi khối lệnh trong một mục kiểm tra kết quả (trừ mục default), lập trình
viên cần phải thêm vào break.
Ví dụ:
<html>
<head></head>
<body>
Thử một chút
<hr>
7
<script language="JavaScript">
a=prompt("Nhap a");
a=parseFloat(a);
switch (a)
{
case 1:
document.write("a=1");
brack;
case 2:
document.write("a=2");
brack;
default:
document.write("a>2");
}
</script>
</body>
</html>
d) Vòng lặp while
Vòng lặp while có mục đích lặp đi lặp lại một khối lệnh nhất định cho
đến khi biểu thức điều kiện trả về false. Khi dùng vòng lặp while phải chú ý tạo
lối thoát cho vòng lặp (làm cho biểu thức điều kiện có giá trị false), nếu không
đoạn mã nguồn sẽ rơi vào vòng lặp vô hạn, là một lỗi lập trình. Vòng lặp while
thường được dùng khi lập trình viên không biết chính xác cần lặp bao nhiêu
lần. Cú pháp của vòng lặp while như sau:
<script language="JavaScript">
while (biểu_thức_điều_kiện) {
khối lệnh cần thực hiện nếu biểu_thức_điều_kiện trả về true;
}
</script>
e) Vòng lặp do ... while
Về cơ bản, vòng lặp do ... while gần như giống hệt như vòng lặp while.
Tuy nhiên, trong trường hợp biểu thức điều kiện trả về false ngay từ đầu, khối
lệnh trong vòng lặp while sẽ không bao giờ được thực hiện, trong khi đó, vòng
lặp do ... while luôn đảm bảo khối lệnh trong vòng lặp được thực hiện ít nhất
một lần. Ví dụ:
<script language="JavaScript">
while (0 > 1)
{
alert("while"); // Câu lệnh này sẽ không bao giờ được thực hiện
8
}
do
{
alert("do ... while"); // Bạn sẽ nhận được thông báo do ... while một lần
duy nhất
} while (0 > 1);
</script>
Cú pháp của vòng lặp do ... while như sau:
<script language="JavaScript">
do
{
khối lệnh;
} while (biểu_thức_điều_kiện);
</script>
f. Vòng lặp for
Vòng lặp for thường được sử dụng khi cần lặp một khối lệnh mà lập trình viên
biết trước sẽ cần lặp bao nhiêu lần. Cú pháp của vòng lặp for như sau:
<script language="JavaScript">
for (biểu_thức_khởi_tạo; biểu_thức_điều_kiện;
biểu_thức_thay_đổi_giá_trị)
{
Khối lệnh cần lặp;
}
</script>
Khi bắt đầu vòng lặp for, lập trình viên cần khởi tạo một biến nhất định
bằng biểu_thức_khởi_tạo để dùng trong biểu_thức_điều_kiện, nếu
biểu_thức_điều_kiện trả về true, khối lệnh cần lặp sẽ được thực hiện, sau khi
thực hiện xong khối lệnh cần lặp, biểu_thức_thay_đổi_giá_trị sẽ được thực
hiện, tiếp theo, biểu_thức_điều_kiện sẽ lại được kiểm tra, cứ như vậy cho đến
khi biểu_thức_điều_kiện trả về false, khi đó vòng lặp sẽ kết thúc.
Ví dụ:
<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>");
}
9
</SCRIPT>
</HEAD>
<BODY></BODY>
</HTML>
g. Vòng lặp for ... in
Vòng lặp for ... in dùng để lặp qua tất cả các thuộc tính của một đối tượng (hay
lặp qua tất cả các phần tử của một mảng). Cú pháp của vòng lặp này như sau:
<script language="JavaScript">
for (biến in đối_tượng)
{
khối lệnh cần thực hiện, có thể sử dụng đối_tượng[biến] để truy
cập từng thuộc tính (phần tử) của đối tượng;
}
</script>
Ví dụ:
<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>
i. NEW
Biến new được thực hiện để tạo ra một thể hiện mới của một đối tượng
Cú pháp
objectvar=new object_type ( param1 [,param2]... [,paramN])
Ví dụ sau tạo đối tượng person có các thuộc tính firstname, lastname,
age, sex. Chú ý rằng từ khoá this được sử dụng để chỉ đối tượng trong hàm
person. Sau đó ba thể hiện của đối tượng person được tạo ra bằng lệnh new
Ví dụ:
10
<HTML>
<HEAD>
<TITLE>New Example </TITLE>
<SCRIPT LANGUAGE= "JavaScript">
function person(first_name, last_name, age, sex){
this.first_name=first_name;
this.last_name=last_name;
this.age=age;
this.sex=sex;
}
person1= new person("Thuy", "Dau Bich", "23", "Female");
person2= new person("Chung", "Nguyen Bao", "24", "Male");
person3= new person("Binh", "Nguyen Nhat", "24", "Male");
person4= new person("Hoàn", "Đỗ Văn", "24", "Male");
document.write ("1. "+person1.last_name+" " + person1.first_name +
"<BR>" );
document.write("2. "+person2.last_name +" "+ person2.first_name +
"<BR>");
document.write("3. "+ person3.last_name +" "+ person3.first_name +
"<BR>");
document.write("4. "+ person4.last_name +" "+
person4.first_name+"<BR>");
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
j. THIS
Từ khoá this được sử dụng để chỉ đối tượng hiện thời. Đối tượng được gọi
thường là đối tượng hiện thời trong phương thức hoặc trong hàm.
Cú pháp
this [.property]
Có thể xem ví dụ của lệnh new.
k. WITH
Lệnh này được sử dụng để thiết lập đối tượng ngầm định cho một nhóm các
lệnh, bạn có thể sử dụng các thuộc tính mà không đề cập đến đối tượng.
11
Cú pháp
with (object)
{
// statement
}
Ví dụ:
Ví dụ sau chỉ ra cách sử dụng lệnh with để thiết lập đối tượng ngầm định là
document và có thể sử dụng phương thức write mà không cần đề cập đến đối
tượng document
<HTML>
<HEAD>
<TITLE>With Example </TITLE>
<SCRIPT LANGUAGE= "JavaScript">
with (document){
write(“This is an exemple of the things that can be done
<BR>”);
write(“With the <B>with<B> statment. <P>”);
write(“This can really save some typing”);
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
7. CÁC HÀM (FUNCTIONS)
JavaScript cũg cho phép sử dụng các hàm. Mặc dù không nhất thiết phải
có, song các hàm có thể có một hay nhiều tham số truyền vào và một giá trị trả
về. Bởi vì JavaScript là ngôn ngữ có tính định kiểu thấp nên không cần định
nghĩa kiểu tham số và giá trị trả về của hàm. Hàm có thể là thuộc tính của một
đối tượng, trong trường hợp này nó được xem như là phương thức của đối
tượng đó.
Lệnh function được sử dụng để tạo ra hàm trong JavaScript.
Cú pháp
function fnName([param1],[param2],...,[paramN])
{
//function statement
}
12
Ví dụ:
Ví dụ sau minh hoạ cách thức tạo ra và sử dụng hàm như là thành viên
của một đối tượng. Hàm printStats được tạo ra là phương thức của đối tượng
person
<HTML> <HEAD>
<TITLE>Function Example </TITLE>
<SCRIPT LANGUAGE= "JavaScript">
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;
}
function printStats() {
with (document) {
write (" Name :" + this.last_name + " " + this.first_name +
"<BR>" );
write("Age :"+this.age+"<BR>");
write("Sex :"+this.sex+"<BR>");
}
}
person1= new person("Thuy", "Dau Bich", "23", "Female");
person2= new person("Chung", "Nguyen Bao", "24", "Male");
person3= new person("Binh", "Nguyen Nhat", "24", "Male");
person4= new person("Hoan", "Do Van", "23", "Male");
person1.printStats();
person2.printStats();
person3.printStats();
person4.printStats();
</SCRIPT>
</HEAD>
<BODY> </BODY>
</HTML>
13
8. CÁC HÀM CÓ SẴN
JavaScript có một số hàm có sẵn, gắn trực tiếp vào chính ngôn ngữ và không
nằm trong một đối tượng nào:
• eval
• parseInt
• parseFloat
a. EVAL
Hàm này được sử dụng để đánh giá các biểu thức hay lệnh. Biểu thức, lệnh hay
các đối tượng của thuộc tính đều có thể được đánh giá. Đặc biệt hết sức hữu ích
khi đánh giá các biểu thức do người dùng đưa vào (ngược lại có thể đánh giá
trực tiếp).
Cú pháp:
returnval=eval (bất kỳ biểu thức hay lệnh hợp lệ trong Java)
Ví dụ:
<HTML>
<HEAD>
<TITLE>Eval Example </TITLE>
<SCRIPT LANGUAGE= "JavaScript">
var string=”10+ Math.sqrt(64)”;
document.write(string+ “=”+ eval(string));
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
b. PARSEINT
Hàm này chuyển một chuỗi số thành số nguyên với cơ số là tham số thứ hai
(tham số này không bắt buộc). Hàm này thường được sử dụng để chuyển các số
nguyên sang cơ số 10 và đảm bảo rằng các dữ liệu đưọc nhập dưới dạng ký tự
được chuyển thành số trước khi tính toán. Trong trường hợp dữ liệu vào không
hợp lệ, hàm parseInt sẽ đọc và chuyển dạng chuỗi đến vị trí nó tìm thấy ký tự
không phải là số. Ngoài ra hàm này còn cắt dấu phẩy động.
Cú pháp
parseInt (string, [, radix])
Ví dụ:
<HTML>
<HEAD>
<TITLE> perseInt Exemple </TITLE>
14
<SCRIPT LANGUAGE= "JavaScript">
document.write("Converting 0xC hex to base-10: " +
parseInt(0xC,10) + "<BR>");
document.write("Converting 1100 binary to base-10: " +
parseInt(1100,2) + "<BR>");
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
c. PARSEFLOAT
Hàm này giống hàm parseInt nhưng nó chuyển chuỗi thành số biểu diễn dưới
dạng dấu phẩy động.
Cú pháp
parseFloat (string)
Ví dụ:
Ví dụ sau minh hoạ cách thức xử lý của parseFloat với các kiểu chuỗi khác
nhau. Hình 5.8 minh họa kết quả
<HTML> <HEAD>
<TITLE> perseFload Exemple </TITLE>
<SCRIPT LANGUAGE= "JavaScript">
document.write("This script will show how diffrent strings are ");
document.write("Converted using parseFloat<BR>");
document.write("137= " + parseFloat("137") + "<BR>");
document.write("137abc= " + parseFloat("137abc") + "<BR>");
document.write("abc137= " + parseFloat("abc137") + "<BR>");
document.write("1abc37= " + parseFloat("1abc37") + "<BR>");
</SCRIPT>
</HEAD>
<BODY> </BODY>
</HTML>
9. MẢNG (ARRAY)
Mặc dù JavaScript không hỗ trợ cấu trúc dữ liệu mảng nhưng Netscape tạo ra
phương thức cho phép bạn tự tạo ra các hàm khởi tạo mảng như sau:
function InitArray(NumElements){
15
this.length = numElements;
for (var x=1; x<=numElements; x++){
this[x]=0
}
return this;
}
Nó tạo ra một mảng với kích thước xác định trước và điền các giá trị 0.
Chú ý rằng thành phần đầu tiên trong mảng là độ dài mảng và không được sử
dụng.
Để tạo ra một mảng, khai báo như sau:
myArray = new InitArray (10)
Nó tạo ra các thành phần từ myArray[1] đến myArray[10] với giá trị là
0. Giá trị các thành phần trong mảng có thể được thay đổi như sau:
myArray[1] = "Nghệ An"
myArray[2] = "Lào"
Sau đây là ví dụ đầy đủ:
<HTML> <HEAD>
<TITLE> Array Exemple </TITLE>
<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] = "Nghệ An";
myArray[2] = "Hà Nội";
document.write(myArray[1] + "<BR>");
document.write(myArray[2] + "<BR>");
</SCRIPT>
</HEAD>
<BODY> </BODY>
</HTML>
10. SỰ KIỆN
JavaScript là ngôn ngữ định hướng sự kiện, nghĩa là sẽ phản ứng trước
các sự kiện xác định trước như kích chuột hay tải một văn bản. Một sự kiện có
16
thể gây ra việc thực hiện một đoạn mã lệnh (gọi là các chương triình xử lý sự
kiện) giúp cho chương trình có thể phản ứng một cách thích hợp.
Chương trình xử lý sự kiện (Event handler): Một đoạn mã hay một hàm được
thực hiện để phản ứng trước một sự kiện gọi là chương trình xử lý sự kiện.
Chương trình xử lý sự kiện được xác định là một thuộc tính của một thẻ
HTML:
<tagName eventHandler = "JavaScript Code or Function">
Ví dụ sau gọi hàm CheckAge() mỗi khi giá trị củ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ý sự kiện không là một hàm; nó là các lệnh của
JavaScript cách nhau bằng dấu chấm phẩy. Tuy nhiên cho mục đích viết thành
các module nên viết dưới dạng các hàm.
Một số chương trình xử lý sự kiện trong JavaScript:
onBlur Xảy ra khi input focus bị xoá từ thành phần form
onClick Xảy ra khi người dùng kích vào các thành phần
hay liên kết của form.
onChange Xảy ra khi giá trị của thành phần được chọn thay
đổi
onFocus Xảy ra khi thành phần của form được focus(làm
nổi lên).
onLoad Xảy ra trang Web được tải.
onMouseOver Xảy ra khi di chuyển chuột qua kết nối hay
anchor.
onSelect Xảy ra khi người sử dụng lựa chọn một trường
nhập dữ liệu trên form.
onSubmit Xảy ra khi người dùng đưa ra một form.
onUnLoad Xảy ra khi người dùng đóng một trang
Sau đây là bảng các chương trình xử lý sự kiện có sẵn của một số đối tượng.
Các đối tượng này sẽ được trình bày kỹ hơn trong phần sau.
Đối tượng Chương trình xử lý sự kiện có sẵn
Selection list onBlur, onChange, onFocus
Text onBlur, onChange, onFocus, onSelect
Textarea onBlur, onChange, onFocus, onSelect
17
Button onClick
Checkbox onClick
Radio button onClick
Hypertext link onClick, onMouseOver, onMouseOut
Clickable Imagemap
area
onMouseOver, onMouseOut
Reset button onClick
Submit button onClick
Document onLoad, onUnload, onError
Window onLoad, onUnload, onBlur, onFocus
Framesets onBlur, onFocus
Form onSubmit, onReset
Image onLoad, onError, onAbort

Ví dụ sau là một đoạn mã script đơn giản của chương trình xử lý sự kiện
thẩm định giá trị đưa vào trong trường text. Tuổi của người sử dụng được nhập
vào trong trường này và chương trình xử lý sự kiện sẽ thẩm định tính hợp lệ
của dữ liệu đưa vào. Nếu không hợp lệ sẽ xuất hiện một thông báo yêu cầu
nhập lại. Chương trình xử lý sự kiện được gọi mỗi khi trường AGE bị thay đổi
và focus chuyển sang trường khác. Hình 5.10 minh hoạ kết quả của ví dụ này
<HTML>
<HEAD>
<TITLE> An Event Handler Exemple </TITLE>
<SCRIPT LANGUAGE= "JavaScript">
function CheckAge(form) {
if ( (form.AGE.value<0)||(form.AGE.value>120) )
{
alert("Tuổi nhập vào không hợp lệ! Mời bạn nhập lại");
form.AGE.value=0;
}
}
</SCRIPT>
</HEAD>
<BODY>
18
<FORM NAME="PHIEU_DIEU_TRA">
Nhập vào tên của bạn:<BR>
Tên <INPUT TYPE=TEXT NAME="TEN" MAXLENGTH=10
SIZE=10><BR>
Đệm <INPUT TYPE=TEXT NAME="DEM" MAXLENGTH=15
SIZE=10><BR>
Họ <INPUT TYPE=TEXT NAME="HO" MAXLENGTH=10
SIZE=10><BR>
Age <INPUT TYPE=TEXT NAME="AGE" MAXLENGTH=3 SIZE=2
onChange="CheckAge(PHIEU_DIEU_TRA)"><BR>
<P>
Bạn thích mùa nào nhất:<BR>
Mùa xuân<INPUT TYPE=RADIO NAME="MUA" VALUE="Mua xuan">
Mùa hạ<INPUT TYPE=RADIO NAME="MUA" VALUE="Mua ha">
Mùa thu<INPUT TYPE=RADIO NAME="MUA" VALUE="Mua thu">
Mùa đông<INPUT TYPE=RADIO NAME="MUA" VALUE="Mua dong">
<P>
Hãy chọn những hoạt động ngoài trời mà bạn yêu thích:<BR>
Đi bộ<INPUT TYPE=CHECKBOX NAME="HOAT_DONG" VALUE="Di
bo">
Trượt tuyết<INPUT TYPE=CHECKBOX NAME="HOAT_DONG"
VALUE="Truot tuyet">
Thể thao dưới nước<INPUT TYPE=CHECKBOX
NAME="HOAT_DONG" VALUE="Duoi
nuoc">
Đạp xe<INPUT TYPE=CHECKBOX NAME="HOAT_DONG"
VALUE="Dap xe">
<P>
<INPUT TYPE=SUBMIT>
<INPUT TYPE=RESET>
</FORM>
</BODY>
</HTML>
19
BÀI TẬP
CÂU HỎI
1. Viết một đoạn lệnh JavaScript sử dụng cách thức confirm() và câu lệnh
if...then để thực hiện:
Hỏi người sử dụng có muốn nhận được một lời chào không
Nếu có thì hiện ảnh wellcome.jpg và một lời chào.
Nếu không thì viết ra một lời thông báo
2. Viết một đoạn lệnh JavaScript để thực hiện:
• Hỏi người sử dụng: "10+10 bằng bao nhiêu?"
• Nếu đúng thì hỏi tiếp: Có muốn trả lời câu thứ hai không?"
• Nếu muốn thì hỏi: "10*10 bằng bao nhiêu?"
• Đánh giá kết quả bằng biểu thức logic sau đó viết ra màn hình:
Đúng: "CORRECT"; Sai: "INCORRECT"
Gợi ý: Sử dụng biến toàn cục lưu kết quả đúng để so sánh với kết qủa
đưa vào.
3. Câu lệnh nào trong các câu sau đây sử dụng sai thẻ sự kiện
a. <BODY onClick="doSomething();">
b. <INPUT TYPE=text onFocus="doSomething();">
c. <INPUT TYPE=textarea onLoad="doSomething();">
d. <BODY onUnload="doSomething();">
e. <FORM onLoad="doSomething();">
f. <FORM onSubmit="doSomething();">
4. Điều gì xảy ra khi thực hiện script sau:
<HTML>
<HEAD>
<TITLE>Exercise 5.4</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- HIDE FROM OTHER BROWSERS
var name = "";
function welcome() {
name = prompt("Welcome to my page! What's Your
Name?","name");
}
function farewell() {
alert("Goodbye " + name + ". Thanks for visiting my page.");
}
// STOP HIDING FROM OTHER BROWSERS -->
</SCRIPT>
20
</HEAD>
<BODY onLoad="welcome();" onUnload="farewell();";>
This is my page!
</BODY>
</HTML>
5. Sử dụng vòng lặp while để mô phỏng các vòng lặp for sau:
a. for (j = 4; j > 0; j --) {
document.writeln(j + "<BR>");
}
b. for (k = 1; k <= 99; k = k*2) {
k = k/1.5;
}
c. for (num = 0; num <= 10; num ++) {
if (num == 8)
break;
}
TRẢ LỜI
1. Sử dụng cách thức confirm() và cấu trúc if...then:
<HTML>
<HEAD>
<TITLE>Execise 5.1</TITLE>
<HEAD>
<BODY>
<P>
<SCRIPT LANGUAGE="JavaScript">
var conf=confirm("Click OK to see a wellcome message!")
if (conf){
document.write("<IMG SRC='wellcome.jpg'>");
document.write("<BR>Wellcome you come to CSE's
class");
}
else
document.write("What a pity! You have just click Cancel
button");
</SCRIPT>
</P>
</BODY>
21
</HTML>
2. Thực hiện hỏi người sử dụng:
<HTML>
<HEAD>
<TITLE>Exercise 3.3</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!-- HIDE FROM OTHER BROWSERS
// DEFINE VARIABLES FOR REST OF SCRIPT
var question="What is 10+10?";
var answer=20;
var correct='CORRECT';
var incorrect='INCORRECT';
// ASK THE QUESTION
var response = prompt(question,"0");
// chECK THE ANSWER THE FIRST TIME
if (response != answer) {
// THE ANSWER WAS WRONG: OFFER A SECOND chAncE
if (confirm("Wrong! Press OK for a second chance."))
response = prompt(question,"0");
} else {
// THE ANSWER WAS RIGHT: OFFER A SECOND QUESTION
if (confirm("Correct! Press OK for a second question.")) {
question = "What is 10*10?";
answer = 100;
response = prompt (question,"0");
}
}
// chECK THE ANSWER
var output = (response == answer) ? correct : incorrect;
// STOP HIDING FROM OTHER BROWSERS -->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!-- HIDE FROM OTHER BROWSERS
// OUTPUT RESULT
document.write(output);
// STOP HIDING FROM OTHER BROWSERS -->
22
</SCRIPT>
</BODY>
</HTML>
3. Các câu sai: a, c, e. Các câu đúng: b, d, f
4. Khi chương trình được chạy (load), hàm wellcome sẽ thực hiện hỏi tên người
sử dụng, lưu tên đó vào biến toàn cục name. Khi người sử dụng sang một địa
chỉ URL khác, hàm farewell() sẽ thực hiện gửi một lời cảm ơn tới người sử
dụng.
5. Sử dụng vòng lặp while như sau:
a.
j = 5;
while (--j > 0) {
document.writeln(j + "<BR>");
}
b.
k = 1;
while (k <= 99) {
k = k * 2 / 1.5;
}
c.
num = 0;
while (num <= 10) {
if (num++ == 8)
break;
}
23
11. CÁC ĐỐI TƯỢNG TRONG JAVASCRIPT
Như đã nói JavaScript là ngôn ngữ lập trình dựa trên đối tượng, nhưng
không hướng đối tượng bởi vì nó không hỗ trợ các lớp cũng như tính thừa kế.
Phần này nói về các đối tượng trong JavaScript và 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
thực sự là các thuộc tính của các đối tượng bố mẹ. Trong ví dụ về chương trình
xử lý sự kiện trước đây form tên PHIEU_DIEU_TRA là thuộc tính của đối
tượng document và trường text AGE là thuộc tính của form
PHIEU_DIEU_TRA. Để tham chiếu đến giá trị của AGE, bạn phải sử dụng:
document.PHIEU_DIEU_TRA.AGE.value
Các đối tượng có thuộc tính (properties), phương thức (methods), và các
chương trình xử lý sự kiện (event handlers) gắn với chúng. Ví dụ đối tượng
document có thuộc tính title phản ánh nội dung của thẻ <TITLE> của document.
Bên cạnh đó bạn thấy phương thức document.write được sử dụng trong nhiều ví
dụ để đưa văn bản kết quả ra document.
Đối tượng cũng có thể có các chương trình xử lý sự kiện. Ví dụ đối
tượng link có hai chương trình xử lý sự kiện là onClick và onMouseOver.
onClick được gọi khi có đối tượng link được kích, onMouseOver được gọi khi
con trỏ chuột di chuyển qua link.
Khi bạn tải một document xuống Navigator, nó sẽ tạo ra một số đối
tượng cùng với những giá trị các thuộc tính của chúng dựa trên file HTML của
document đó và một vài thông tin cần thiết khác. Những đối tượng này tồn tại
một cách có cấp bậc và phản ánh chính cấu trúc của file HTML đó.
24
Trong sơ đồ phân cấp này, các đối tượng con chính là các thuộc tính của
một đối tượng cha. Ví dụ như một form tên là form1 chính là một đối tượng
con của đối tượng document và được gọi tới là document.form1
Tất cả các trang đều có các đối tượng sau đây:
• navigator: có các thuộc tính tên và phiên bản của Navigator đang được
sử dụng, dùng cho MIME type được hỗ trợ bởi client và plug-in được
cài đặt trên client.
• window: là đối tượng ở mức cao nhất, có các thuộc tính thực hiện áp
dụng vào toàn bộ cửa sổ.
• document: chứa các thuộc tính dựa trên nội dung của document như
tên, màu nền, các kết nối và các forms.
• location: có các thuộc tính dựa trên địa chỉ URL hiện thời
• history: Chứa các thuộc tính về các URL mà client yêu cầu trước đó.
25
Window Texturea
Text
FileUpload
Password
Hidden
Submit
Reset
Radio
Checkbox
Button
Select
Plugin
Mime Type
Frame
document
Location
History
Layer
Link
Image
Area
Anchor
Applet
Plugin
Form
navigator
Option
Hình 11.1: Sơ đồ 1 - Phân cấp đối tượng Navigator

Đây là phiên bản tài liệu đơn giản

Xem phiên bản đầy đủ của tài liệu Ngôn ngữ Javascript