a. Viết kịch bản trong trang HTML
Để viết mã script trong tài liệu HTML, ta phải dùng cặp thẻ script. Bạn nên sử dụng cặp thẻ script cùng với cặp thẻ chú thích. Cặp thẻ chú thích sẽ rất quan trọng trong trường hợp bộ duyệt của bạn không hỗ trợ Vbscript. Mã script có thể được viết tại bất cứ vị trí nào trong khung tài liệu HTML.
<Script> Mã lệnh script </Script>
Chú ý rằng thẻ chú thích phải được viết ngay sau thẻ script. Nếu bộ duyệt không hỗ trợ script mà có cặp thẻ chú thích cùng với thẻ script thì nó sẽ bỏ qua thẻ script này và ngăn cản không cho bộ duyệt hiển thị các mã lệnh script. Trong trường hợp bộ duyệt không hỗ trợ script và không có cặp thẻ chú thích thì các mã lệnh script sẽ được bộ duyệt hiển thị nguyên bản lên màn hình. Các dòng chú thích cần đặt sau dấu nháy đơn
b. Các kiểu dữ liệu chuẩn Kiểu Logic Boolean
Kiểu Boolean chỉ có hai giá trị TRUE hoặc FALSE. True tương đương với -1, False tương đương với 0.
Kiểu Byte: Kiểu byte bao gồm các giá trị nguyên từ 0 đến 255.
Kiểu Integer : Kiểu Integer lưu trữ các số nguyên không có dấu phẩy thập phân có giá trị từ -32768 đến +32767
Kiểu Long : Kiểu Long là kiểu số nguyên dài. Phạm vi giá trị là các số từ -231
đến +231
Kiểu Single: Kiểu single là kiểu số thập phân với dấu phẩy động. Các giá trị
trong phạm vi từ - 1.4e-45 đến -3.4e+38 với các số âm, từ 1.4e-45 đến 3.4e+38 với
các số dương.
Kiểu Double: Kiểu double cũng là một kiểu số thập phân với dấu phẩy động với phạm vi lớn hơn kiểu single. Các giá trị trong phạm vi từ -4.9e-324 đến - 1.8e+308 với các số âm, từ 4.9e-324 đến 1.8e+308 với các số dương.
Kiểu Date(Time): Kiểu date lưu trữ các dữ liệu dạng ngày tháng với định dạng mm/dd/yy.
Kiểu String: Kiểu tring lưu trữ các xâu văn bản, bao gồm các chữ số, các ký tự và các ký hiệu khác.
Kiểu Object: Kiểu object lưu trữ các đối tượng như các điều khiển, các đối tượng của bộ duyệt.
Kiểu Error: Kiểu enor lưu trữ các lỗi.
Kiểu Empty: Kiểu empty được dùng cho các biến được tạo ra nhưng chưa được gán giá trị.
Kiểu Null: Kiểu null dùng để tham chiếu đến các biến chưa có dữ liệu Vbscript có thể chuyển đổi giữa một số kiểu dữ liệu trong một số trường hợp.
c. Các khai báo biến, hằng, mảng
Khai báo biến
Có 2 cách khai báo biến:
+ Khai báo tường minh (dùng từ khoá Dim)
Khai báo không tường minh (bằng cách gán cho biến một giá trị) - Cách 1 :
Sử dụng câu lệnh Explicit và từ khoá Dim. Cú pháp như sau:
Dim Tên_biến
Ví dụ: Dim i
Bạn có thể tạo một danh sách các biến bằng cách phân cách các biến bằng dấu phẩy (,). Ví dụ:
Với cách tạo biến này, khi dùng biến nhất thiết bạn phải khai báo biến trước bằng từ khoá Dim
Cách 2:
Sử dụng câu lệnh implicit. Khi đó ban không cần từ khoá Dim. Cú pháp như sau:
Tên_biến = giá trị
Ví dụ: I = 10
Với cách tạo biến này khi sử dụng biến bạn không phải khai báo trước. Tuy nhiên ta nên sử dụng cách 1 bởi vì trong nhiều trường hợp nếu đánh sai tên biến do lỗi chính tả Vbscript sẽ cảnh báo nên phải khai báo biến trước.
Ví dụ:
<Script language = Vbscript> On explicit
Dim x x = 10 x = x + 1 </script >
Khi chạy chương trình sẽ có giá trị bằng 11 Ví dụ: <Script language=‟Vbscript‟> On explicit X = 10 X = x + 1 </script >
Khi chạy chương trình Vbscript sẽ báo lỗi yêu cầu phải khai báo x trước lệnh x=10 Ví dụ
<Script language = „Vbscript‟> <!--
temp=10
temp = tmp + 10 </Script >
Khi chạy chương trình temp sẽ có giá trị bằng =10, ta viết nhầm temp trong vế phải của lệnh gán nhưng Vbscript sẽ không báo lỗi vì temp sẽ được hiểu là một biến mới và nhận giá trị bằng 0 lúc khởi tạo (trong lệnh gán).
Hằng là các đại lượng có giá trị không đổi. Hằng được khai báo theo mẫu:
Const Tên_hằng = giá trị
Ví dụ:
Const Mystring = “This is my tring" „Hằng chuỗi
Const Myage = 49 „Hằng nguyên
Const Cutoffdate = #6-1-97# „Hằng date
Khai báo mảng
Mảng là tập hợp các phần tử có cùng kiểu dữ liệu. Có hai loại mảng là mảng tĩnh và mảng động. Mảng tĩnh được cố định số các phần tử trong mảng khi ta khai báo. Mảng động có thể thay đổi số lượng các phần tử của mảng trong chương trình.
Mảng được khai báo theo mẫu:
Dim a(10), b(20,30)
Khi đó:
a là mảng một chiều có 11 phần tử: a(0), a(1), a(2), …,a(10) b là mảng2 chiều gồm 21 hàng, 31 cột; 21 *31 phần tử: b(i,j) với i= đến 20, j=0 đến 30
* Mảng động được khai báo theo mẫu:
Dim a()
Sau này để sử dụng mảng a cần khai báo lại để định rõ số chiều và kích thước mỗi chiều như sau:
Redim a(10,20)
Mảng động thường được sử dụng để khai báo đối (là mảng) của hàm và thủ tục.
c. Các phép toán
Các phép toán số học
Phép cộng (+): Các toán hạng thuộc kiểu số: a + b
Phép trừ (-) : Các toán hạng thuộc kiểu số: a - b
Phép nhân ( *) : Các toán hạng thuộc kiểu số: a * b
Phép chia (/ và \ ) : Các toán hạng thuộc kiểu số: a / b; a \ b
a /b : phép chia lấy kết quả có phần thập phân
a \ b : phép chia lấy kết quả phần nguyên.
Phép lấy dư (mod): Áp dụng đối với các toán hạng kiểu số, a mod b = phần dư của phép chia a cho b .
. Các phép toán so sánh
Các phép toán so sánh bao giờ cũng trả về giá trị thuộc kiểu Boolean.
So sánh bằng (-) : a = b
So sánh khác (<>): a <> b
So sánh lớn hơn, lớn hơn hoặc bằng (>, >=): a > b; a >=b So sánh nhỏ hơn, nhỏ hơn hoặc bằng (<, <=) : a < b; a <=b So sánh bằng với các đối tượng (is): a is b
Các phép toán logic
Các phép toán logic dùng với các toán hạng thuộc kiểu Boolean: not, and, or.
Các phép toán đối với kiểu xâu (string) Phép nối xâu (&): str 1 & str2 &… & strn
Phép cộng xâu (+): Strl + Str2 +… + Strn
Nếu mọi Stri đều là xâu thì tương tự phép nối xâu nhưng nếu tồn tại Str nào đó, không là xâu thì sẽ mắc lỗi.
Một số hàm thao tác với các kiểu dữ liệu
Isdate
Cú pháp isdate(d)
Hàm isdate(d) sẽ trả lại giá trị true nếu tham số d thuộc kiểu ngày tháng, trong trường hợp ngược lại trả về giá trị false.
Ví dụ:
Isdate(#04/01/96") = True lsdate("30/02/98") = False
Isnumeric
Cú pháp isnumeric(n)
Hàm isnumeric(n) yêu cầu sẽ trả về giá trị True nếu n là một số, trong trường hợp ngược lại trả về False
Isempty
Cú pháp: Isempty(v)
Hàm isempty(v) sẽ trả về giá tri True nếu biến v chưa bao giờ được gán giá trị, hay nói cách khác là chưa bao giờ được sử dụng trong chương trình.
Isnull
Cú pháp: Isnull(v)
Hàm isnull(v) sẽ trả về giá trị True nếu v được thiết lập giá tri Null và sẽ trả về giá trị False trong các trường hợp còn lại.
Isobject
Cú pháp: Isobject(o)
Hàm Isobject(o) sẽ trả lại giá trị True nếu o là một đối tượng, và sẽ nhập giá trị False trong các trường hợp còn lại.
Cbool
Cú pháp: Cbool(b)
Hàm Cbool(b) sẽ trả tề gia trị tương ứng của b thuộc kiểu Boolean. Biến b phải là một số. Nếu b = 0 thì trả về False, trong các trường hợp còn lại hàm trả về giá trị True. Trong các trường hợp không chuyển đổi được một lỗi sẽ được trả về.
Cbyte
Cú pháp: Cbyte(b)
Hàm Cbyte(b) sẽ trả về giá trị tương ứng của b thuộc kiểu byte. Biến phải là một số trong phạm vi từ 0…255. Trong các trường hợp không chuyển đổi được một lỗi sẽ được trả về.
Cdate
Cú pháp: Cdate(s)
Hàm Cdate(s) sẽ trả về giá trị tương ứng của xâu s thuộc kiểu Date. Biến s phải là một xâu có định dạng ngày tháng. Trong các trường hợp không chuyển đổi được một lỗi sẽ được trả về.
Cint
Cú pháp: Cint(n)
Hàm Cint(n) sẽ trả về giá trị tương ứng của n thuộc kiểu Integer. Biến phải là một số trong phạm vi của kiểu Integer. Khi chuyển đổi hàm sẽ thực hiện làm tròn. Trong các trường hợp không chuyển đổi được một lỗi sẽ được trả về.
CLng
Hàm CLng(n) sẽ trả về giá trị tương ứng của n thuộc kiểu Long. Biến phải là một số trong phạm vi kiểu Long. Khi chuyển đổi hàm sẽ thực hiện làm tròn. Trong các trường hợp không chuyển đổi được một lỗi sẽ được trả về.
CSng
Cú pháp: Csng(n)
Hàm Csng(n) sẽ trả về giá trị tương ứng của n thuộc kiểu single. Biến n phải là một số trong phạm vi kiểu single. Trong các trường hợp không chuyển đổi được một lỗi sẽ được trả về.
Cdbl
Cú pháp: Cdbl(n)
Hàm Cdbl(n) sẽ trả về giá trị tương ứng của n thuộc kiểu Dollble. Biến n phải là một số trong phạm vi kiểu Double. Trong các trường hợp không chuyển đổi được một lỗi sẽ được trả về.
Cstr
Cú pháp: Cstr(n)
Hàm Cstr(n) sẽ trả về giá trị tương ứng của n thuộc kiểu tring. Biến n phải là một số hoặc có thể là một xâu.
d. Các toán tử điều khiển trong VBScript
Toán tử rẽ rẽ nhánh If.. then [else …].. End if
Cú pháp 1 : If BTĐK Then Các lệnh khi BTĐK đúng End if Cú pháp 2: If BTĐK Then Các lệnh khi BTĐK đúng Else Các lệnh khi BTĐK sai End if
Toán tử rẽ nhánh Select case
Cú pháp:
Select case BT Case gt1
Các lệnh khi BT = gt1 Case gt2
Các lệnh khi BT = gt2 Case else
Các lệnh khi BT - gt n+l End select
BT là biểu thức kiểu đếm được Toán tử lặp For... next
Cú pháp 1:
For bd = gt1 to gt2 Các lệnh Next
Cú pháp 2:
For bd = gt1 to gt2 step <đơn vị tăng> Các lệnh
Next
Toán tử lặp Do While... Loop
Cú pháp :
Do while BTĐK
Các lệnh
Loop
Toán tử lặp Do Loop … While
Cú pháp: Do Các lệnh Loop while BTĐK e. Các hàm và thủ tục trong Vbscript Thủ tục
Thủ tục là đoạn chương trình thực hiện một nhiệm vụ nào đó.
Cú pháp khai báo: Sub Tên_thủ_tục (danh sách các tham số)
Mã lệnh trong thân thủ tục
End Sub
Tên_thủ_tục được đặt theo quy tắc đặt tên
Danh sách các tham số được phân cách nhau bởi dấu phẩy Ví dụ:
Sub Showmessage(currentmessage)
Msgbox Currentmessage, vbokonly, “Important Message” End Sub
*Gọi thủ tục
Có 2 cách gọi thủ tục: Cách 1 :
Tên_thủ_tục (danh sách tham số tương ứng trong thủ tục)
Hoặc: Tên_thủ_tục Danh sách tham số
Cách 2 :
Call là từ khóa Hàm
Hàm là một đoạn chương trình thực hiện một nhiệm vụ nào đó nhưng khác với thủ tục, hàm bao giờ cũng trả về một giá trị thông qua tên hàm.
Khai báo sử dụng:
Function Tên_hàm (danh sách các tham số)
Mã lệnh trong thân hàm
End Function
Function : Là từ khóa
Trong đoạn mã lệnh của thân hàm phải có lệnh Tên hàm = Giá trị
Thoát khỏi hàm
Cú pháp: Exit Function
Tham biến và tham trị trong thủ tục và hàm
Có hai cách truyền tham số cho thủ tục và hàm là truyền theo tham biến và truyền theo tham trị.
Tham trị: Trong các ví dụ trên cách truyền tham số cho thủ tục, hàm là truyền theo kiểu tham trị. Với cách truyền này sau khi kết thúc thủ tục hàm giá trị của các biến đưa vào không được thay đổi giá trị cho dù bạn có thay đồi giá trị của nó trong thân thủ tục hàm. Tuy nhiên, bạn có thể truyền tham trị theo cách sau:
Sub Tên_thủ_tục (ByVal Tên_biến 1, ByVal Tên_biến2,…) End sub
Khi đó Tên_biến1, Tên_biến2 là các tham trị. ByVal là từ khóa
Mặc định nếu bạn không để Byval hay Byref trước tên biến thì Vbscript hiểu là Byval.
Tham biến:
Truyền tham số cho thủ tục, hàm theo kiểu tham biến thì ngược lại với cách truyền kiểu tham trị Sau khi kết thúc thủ tục, hàm giá trị của biến được giữ nguyên như nó đã có trong thân thủ tục, hàm.
Cú pháp khai báo:
End Sub
Khi đó tên_biến1, tên_biến2 là các tham biến. Byref là từ khóa
f. Các ô điều khiển trong form HTML
Các điều khiển cơ bản trong Form gồm các loại: Textbox, textaraea, button. Khi các điều khiển này đặt trong form bạn không thể truy xuất trực tiếp đến chúng thông qua tên trong script. Để truy xuất đến các đối tượng của Forn trong script bạn phải truy xuất thông qua cú pháp sau:
Document.form_name.control_name.property Document là từ khóa chỉ toàn bộ tài liệu HTML
Form_name là tên form do bạn đặt thông qua thuộc tính name của thẻ form
Control_name là tên điều khiển trong form mà bạn muốn truy xuất đến
property là thuộc tính của điều khiển
Bạn có thể thiết lập tên form vào một biến bằng cách sử dụng cú pháp sau:
set form_var=document.form_name
form_var là lên biến form
Khi đó bạn sẽ truy xuất đến các điều khiển trong form theo cú pháp:
form_var.control_name.property
Ví dụ: <HTML>
<head> <title> TEST VB </title></head> <body>
<Form name = „frm Test‟ method =‟post‟ action =‟form.htm‟> Ban hay nhap ten: <br>
<Input type =‟text‟ name =‟txtname‟ value=‟‟<br><br>
<Input type=‟button‟ name=‟cmdname‟ value=‟Ten vua nhap?‟><br><br> <Input type =‟text‟ name =‟txtname‟ value=‟‟<br><br>
</form>
<Script language =‟Vbscript‟> sub cmdname_onclick()
dim form dim name
set form = document.frmTest name = form.txtname.value form.txtname.value=name end sub
</script> </body> <HTML>