Gáo trình JavaScript (Phần 2)
Tóm tắt Gáo trình JavaScript (Phần 2): ...ối tợng Date là đối tợng có sẵn trong JavaScript. Nó cung cấp nhiều phơng thức có ích để xử lý về thời gian và ngày tháng. Đối tợng Date không có thuộc tính và chơng trình xử lý sự kiện. Phần lớn các phơng thức date đều có một đối tợng Date đi cùng. Các phơng thức giới thiệu trong phần này ...ng một tên trong các thẻ INPUT. Có một vài thuộc tính để kiểm tra trạng thái hiện thời của một nhóm nút radio. Bảng sau hiển thị các thuộc tính và cách thức của đối tợng radio. Bảng? . Các thuộc tính và cách thức của đối tợng radio. Thuộc tính và cách thức Mô tả checked Mô tả trạng thái hiệ...form.action cách thức JavaScript Xâu chứa giá trị của thuộc tính ACTION trong thẻ FORM form.elemrnts thuộc tính JavaScript mảng chứa danh sách các phần tử trong form (nh checkbox, trờng text, danh sách lựa chọn) form.encoding thuộc tính JavaScript xâu chứa kiểu MIME sử dụng khi chuyển thôn...
function echo(form,currentField) { if (currentField == "first") form.second.value = form.first.value; else form.first.value = form.second.value; } // STOP HIDING FROM OTHER BROWSERS --> <INPUT TYPE=text NAME="first" onChange="echo(this.form,this.name);"> <INPUT TYPE=text NAME="second" onChange="echo(this.form,this.name);"> 1.3 Phần tử Textarea Thẻ TEXTAREA cung cấp một hộp cho phép nhập số dòng text do ngời thiết kế định trớc. Ví dụ: Default Text Here ví dụ này tạo ra một trờng text cho phép đa vào 10 hàng ,mỗi hàng 25 ký tự. Dòng "Defautl Text Here"sẽ xuất hiện trong trờng này vào lần hiển thị đầu tiên. Cũng nh phần tử text , JavaScript cung cấp cho bạn các thuộc tính defaultValue, name, và value, các cách thức focus(), select(), và blur(), các thẻ sự kiện onBlur, onForcus, onChange, onSelect. 2. Mảng elements[] Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 67 Các đối tợng của form có thể đợc gọi tới bằng mảng elements[]. Ví dụ bạn tạo ra một form sau: bạn có thể gọi tới ba thành phần này nh sau: document.elements[0], document.elements[1], document.elements[2], hơn nữa còn có thể gọi document.testform.one, document.testform.two, document.testform.three. Thuộc tính này thờng đợc sử dụng trong các mối quan hệ tuần tự của các phần tử hơn là dùng tên của chúng. 3. Mảng form[] Các thẻ sự kiện đợc thiết kế để làm việc với các form riêng biệt hoặc các trờng ở một thời điểm, nó rất hữu dụng để cho phép gọi tới các form có liên quan trong cùng một trang. Mảng form[] đề cập đến ở đây có thể có nhiều xác định các nhân của form trên cùng một trang và have information in a single field match in all three forms. Có thể gọi bằng document.forms[] thay vì gọi bằng tên form. Trong script này, bạn có hai trờng text để nhập và nằm trên hai form độc lập với nhau. Sử dụng mảng form bạn có thể tơng tác trên các giá trị của các trờng trong hai form cùng một lúc khi ngời sử dụng thay đổi giá trị trên một form. forms[] Example <INPUT TYPE=text onChange="document.forms[1].elements[0].value = this.value;"> <INPUT TYPE=text onChange="document.forms[0].elements[0].value = this.value;"> Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 68 Mặt khác, bạn cũng có thể truy nhập đến form bằng tên form đợc đặt trong thẻ FORM: Khi đó bạn có thể gọi là document.forms["name"] hoặc document.name 4. Xem lại các lệnh và mở rộng Lệnh/ Mở rộng Kiểu Mô tả blur() cách thức JavaScript Mô tả việc dịch chuyển con trỏ từ một phần tử form.action cách thức JavaScript Xâu chứa giá trị của thuộc tính ACTION trong thẻ FORM form.elemrnts thuộc tính JavaScript mảng chứa danh sách các phần tử trong form (nh checkbox, trờng text, danh sách lựa chọn) form.encoding thuộc tính JavaScript xâu chứa kiểu MIME sử dụng khi chuyển thông tin từ form tới server form,name thuộc tính JavaScript Xâu chứa giá trị thuộc tính NAME trong thẻ FORM form.target thuộc tính JavaScript Xâu chứa tên cửa sổ đích bởi một form submition form.submit cách thức JavaScript Mô tả việc submit một form HTML type thuộc tính JavaScript ánh xạ kiểu của một phần tử form thành một xâu. onSubmit Thẻ sự kiện thẻ sự kiện cho việc submit button thuộc tính HTML Thuộc tính kiểu cho các nút bấm của HTML () checkbox thuộc tính HTML Thuộc tính kiểu cho các checkbox của HTML () pasword thuộc tính HTML Thuộc tính kiểu cho các dòng pasword của HTML(<INPUT TYPE=password>) radio thuộc tính HTML Thuộc tính kiểu cho các nút radio của HTML () Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 69 reset thuộc tính HTML Thuộc tính kiểu cho các nút reset của HTML () SELECT thẻ HTML Hộp thẻ cho danh sách lựa chọn OPTION thẻ HTML chỉ ra các lựa chọn trong danh sách lựa chọn(Option 1Option 2) submit thuộc tính HTML Thuộc tính kiểu của nút submit () text thuộc tính HTML Thuộc tính kiểu của trờng trong form () TEXTAREA Thẻ HTML Hộp thẻ cho nhiều dòng text ( defautl text ) name thuộc tính JavaScript Xâu chứa tên phần tử HTML (button, checkbox, password...) value thuộc tính JavaScript Xâu chứa giá trị hiên thời của một phần tử HTML(button, checkbox, password...) click() cách thức JavaScript Mô tả việc kích vào một phần tử trên form (button, checkbox,password) onClick thuộc tính JavaScript Thẻ sự kiện cho sự kiện kích (button, checkbox, radio button, reset, selection list, submit) checked thuộc tính JavaScript Giá trị kiểu Boolean mô tả một lựa chọn check(checkbox, radio button) defaultChecked thuộc tính JavaScript Xâu chứa giá trị mặc định của một phần tử HTML (password, text, textarea) focus() cách thức JavaScript Mô tả việc con trỏ tới một phần tử (password, text, textarea) blur() cách thức JavaScript Mô tả việc con trỏ rời khỏi một phần tử (password, text, textarea) select() cách thức JavaScript Mô tả việc lựa chọn dòng text trong một trờng (password, text, textarea) onFocus() Thẻ sự kiện Thẻ sự kiện cho sự kiện focus(password, selection list, text, textarea) Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 70 onBlur Thẻ sự kiện Thẻ sự kiện cho sự kiện blur (password, selection list, text, textarea) onChange Thẻ sự kiện Thẻ sự kiện cho sự kiện khi giá trị của trờng thay đổi (password, selection list, text, textarea) onSelect Thẻ sự kiện Thẻ sự kiện khi ngời sử dụng chọn dòng text trong một trờng (password, text, textarea) index thuộc tính JavaScript Là một số nguyên mô tả lựa chọn hiện thời trong một nhóm lựa chọn (radio button) length thuộc tính JavaScript Số nguyên mô tả tổng số các lựa chọn trong một nhóm các lựa chọn (radio button) dafautlSelected thuộc tính JavaScript Giá trị Boolean mô tả khi có một lựa chọn đợc đặt là mặc định (seledtion list) options thuộc tính JavaScript Mảng các lựa chọn trong danh sách lựa chọn text thuộc tính JavaScript Dòng text hiển thị cho một thành phần của menu trong danh sách lựa chọn TABLE thẻ HTML Hộp thẻ cho các bảng HTML TR thẻ HTML Hộp thẻ cho các hàng của một bảng HTML TD thẻ HTML Hộp thẻ cho các ô của một hàng trong một bảng HTML COLSPAN thuộc tính HTML Là thuộc tính của thẻ TD mô tả trong một ô của bảng có nhiều cột ROWSPAN thuộc tính HTML Là thuộc tính của thẻ TD mô tả trong một ô của bảng có nhiều hàng BODER thuộc tính HTML Là thuộc tính của thẻ TABLE mô tả độ rộng đờng viền của bảng document.forms[] thuộc tính JavaScript mảng của các đối tợng form với một danh sách các form trong một document string.substring() cách thức JavaScript Trả lại một xâu con của xâu string từ Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 71 tham số vị trí ký tự đầu đến vị trí ký tự cuối Math.floor() cách thức JavaScript Trả lại một giá trị nguyên tiếp theo nhỏ hơn giá trị của tham số đa vào. string.length thuộc tính JavaScript Giá trị nguyên của số thứ tự ký tự cuối cùng trong xâu string Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 72 5. Mô hình đối tợng (Object Model) Đối tợng và thuộc tính Nh đã biết, một đối tợng trong JavaScript có các thuộc tính đi kèm với nó. Bạn có thể truy nhập đến các thuộc tính của nó bằng cách gọi : objectName.propertyName Cả tên đối tợng và tên thuộc tính đều nhạy cảm. Bạn định nghĩa một thuộc tính bằng cách gán cho nó một giá trị. Ví dụ, giả sử có một đối tợng tên là myCar (trong trờng hợp này giả sử đối tợng này đã tồn tại sẵn sàng). Bạn có thể lấy các thuộc tính có tên make, model và year của nó nh sau: myCar.make = “Ford“ myCar.model = “Mustang“ myCar.year = 69; Có một mảng lu trữ tập hợp các giá trị tham chiếu tới từng biến. Thuộc tính và mảng trong JavaScript có quan hệ mật thiết với nhau, thực ra chúng chỉ khác nhau về cách giao tiếp với cùng một cấu trúc dữ liệu. Ví dụ cũng có thể truy nhập tới các thuộc tính của đối tợng myCar ở trên bằng mảng nh sau: myCar[make] = “Ford“ myCar[model] = “Mustang“ myCar[year] = 69; Kiểu mảng này đợc hiểu nh một mảng có khả năng liên kết bởi mỗi một phần tử trong đó đều có thể liên kết đến một giá trị xâu nào đó. Để minh hoạ việc mày đợc thực hiện nh thế nào, hàm sau đây sẽ hiển thị các thuộc tính của một đối tợng thông qua tham số về kiểu đối tợng đó và tên đối tợng. function show_props (obj, obj_name) { var result=”” for (i in obj) result=result+ obj_name + “.”+ i+ “=” + obj[i] + “\n” return result } Khi gọi hàm show_props(myCar,”myCar”) sẽ hiện lên: myCar.make = Ford myCar.model = Mustang myCar.year = 69; Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 73 Tạo các đối tợng mới Cả JavaScript client-side và server-side đều có một số đối tợng đợc định nghĩa trớc. Tuy nhiên, bạn cũng có thể tạo ra những đối tợng của riêng bạn. Trong JavaScript 1.2, nếu bạn chỉ muốn tạo ra một đối tợng duy nhất của một kiểu đối tợng, bạn có thể tạo nó bằng cách sử dụng khởi tạo đối tợng. Hoặc nếu bạn muốn tạo ra nhiều cá thể của một kiểu đối tợng, bạn có thể tạo ra một hàm xây dựng trớc, sau đó tạo ra các đối tợng có kiểu của hàm đó bằng toán tử new 5.1.1. Sử dụng khởi tạo đối tợng Trong những phiên bản trớc của Navigator, bạn chỉ có thể tạo ra một đối tợng bằng cách sử dụng hàm xây dựng chúng hoặc sử dụng một hàm đợc cung cấp bởi một vài đối tợng khác để đạt đợc mục đích. Tuy nhiên, trong Navigator 4.0, bạn có thể tạo ra một đối tợng bằng cách sử dụng một khởi tạo đối tợng.Bạn sử dụng cách này khi bạn chỉ muốn tạo ra một cá thể đơn lẻ chứ không phải nhiều cá thể của đối tợng. Cú pháp để tạo ra một đối tợng bằng cách khởi tạo đối tợng (Object Initializers): objectName={property1: value1, property2: value2, ..., propertyN: valueN} Trong đó objectName là tên của đối tợng mới, mỗi propertyI là một xác minh (có thể là một tên, một số hoặc một xâu ký tự) và mỗi valueI là một biểu thức mà giá trị của nó đợc gán cho propertyI. Có thể lựa chọn khởi tạo bằng tên đối tợng hoặc chỉ bằng các khai báo. Nếu nh bạn không cần dùng đến đối tợng đó trong mọi chỗ, bạn không cần phải gán nó cho một biến. Nếu một đối tợng đợc tạo bằng cách khởi tạo đối tợng ở mức cao nhất, mỗi lần đối tợng đó xuất hiện trong các biểu thức, JavaScript sẽ đánh giá lại nó một lần. Ngoài ra, nếu sử dụng việc khởi tạo này trong một hàm thì mỗi lần gọi hàm, đối tợng sẽ đợc khởi tạo một lần Giả sử bạn có câu lệnh sau: if (condition) x={hi: ”there.”} Trong trờng hợp này, JavaScript sẽ tạo ra một đối tợng và gắn nó vào biến x nếu biểu thức condition đợc đánh giá là đúng Còn ví dụ sau tạo ra một đối tợng myHonda với 3 thuộc tính: myHonda={color:”red”,wheels:4,engine:{cylinder:4,size:2.2}} Chú ý rằng thuộc tính engine cũng là một đối tợng với các thuộc tính của nó Trong Navigator 4.0, bạn cũng có thể sử dụng một khởi tạo để tạo một mảng. Cú pháp để tạo mảng bằng cách này khác với tạo đối tợng: arrayName=[element0, element1,...,elementN] Trong đó, arrayName là tên của mảng mới, và mỗi elementI là giá trị của phần tử ở vị trí đó của mảng. Khi bạn tạo một mảng bằng cách sử dụng phơng pháp khởi tạo, thì nó sẽ coi mỗi giá trị là một phần tử trên mảng, và chiều dài của mảng chính là số các tham số. Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 74 Bạn không cần phải chỉ định rõ tất cả các phần tử trên mảng mới. Nếu bạn đặt hai dấu phẩy vào hàng, thì mảng sẽ đợc tạo với những chốn trống cho những phần tử cha đợc định nghĩa nh ví dụ dới đây: Nếu một mảng đợc tạo bằng cách khởi tạo(initializer) ở mức cao nhất, mỗi lần mảng đó xuất hiện trong các biểu thức, JavaScript sẽ đánh giá lại nó một lần. Ngoài ra, nếu sử dụng việc khởi tạo này trong một hàm thì mỗi lần gọi hàm, mảng sẽ đợc khởi tạo một lần Ví dụ1: Tạo một mảng coffees với 3 phần tử và độ dài của mảng là 3: coffees = [“French Roast”,”Columbian”,”Kona”] Ví dụ 2: Tạo ra một mảng với 2 phần tử đợc khởi đầu và một phần tử rỗng: fish = [“Lion”, ,” Surgeon”] Với biểu thức này, fish[0] là “Lion”, fish[2] là ” Surgeon”, và fish[2] cha đợc định nghĩa 5.1.2. Sử dụng một hàm xây dựng(Constructor Function) Bạn có thể tạo ra đối tợng của riêng mình với hai bớc sau: 1. Định nghĩa kiểu của đối tợng bằng cách viết một hàm xây dựng. 2. Tạo ra một cá thể của đối tợng đó bằng toán tử new Để định nghĩa một kiểu đối tợng, ta phải tạo ra một hàm để chỉ định rõ tên, các thuộc tính và các cách thức của kiểu đối tợng đó. Ví dụ giả sử bạn muốn tạo một kiểu đối tợng ô tô với tên là car, có các thuộc tính make, model, year và color, để thực hiện việc này có thể viết một hàm nh sau: function car(make, model, year ){ this.make = make this.model = model this.year = year } Chú ý việc sử dụng toán tử this để gán giá trị cho các thuộc tính của đối tợng phải thông qua các tham số của hàm. Ví dụ, bạn có thể tạo một đối tợng mới kiểu car nh sau: mycar = new car(“Eagle”,”Talon TSi”,1993) Câu lệnh này sẽ tạo ra đối tợng mycar và liên kết các giá trị đợc đa vào với các thuộc tính. Khi đó giá trị của mycar.make là “Eagle”, giá trị của mycar.model là “Talon TSi”, và mycar.year là một số nguyên 1993....Cứ nh vậy bạn có thể tạo ra nhiều đối tợng kiểu car. Một đối tợng cũng có thể có những thuộc tính mà bản thân nó cũng là một đối t- ợng. Ví dụ bạn định nghĩa thêm một đối tợng khác là person nh sau: function person(name, age, sex){ this.name=name this.age=age this.sex=sex } Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 75 Và sau đó ta tạo ra hai ngời mới: rank = new person(“Rank McKinnon”,33,”M”) ken = new person(“Ken John”,39,”M”) Bây giờ bạn định nghĩa lại hàm xây dựng car nh sau: function car(make, model, year,owner ){ this.make = make this.model = model this.year = year this.owner = owner } Nh vậy bạn có thể tạo đối tợng kiểu car mới: car1 = new car(“Eagle”,”Talon TSi”,1993,rank) car2 = new car(“Nissan”,”300ZX”,1992,ken) Nh vậy, thay vì phải qua một xâu ký tự hay một giá trị số khi tạo đối tợng, ta chỉ cần đa hai đối tợng đã đợc tạo ở câu lệnh trên vào dòng tham số của đối tợng mới tạo. Ta cũng có thể lấy đợc thuộc tính của đối tợng owner bằng câu lênh sau: car2.owner.name Chú ý rằng bạn cũng có thể tạo ra một thuộc tính mới cho đối tợng trớc khi định nghĩa nó, ví dụ: car1.color=”black” Nh vậy, thuộc tính color của đối tợng car1 đợc gán là “black”. Tuy nhiên, nó sẽ không gây tác động tới bất kỳ một đối tợng kiểu car nào khác. Nếu muốn thêm thuộc tính cho tất cả các đối tợng thì phải định nghĩa lại hàm xây dựng đối tợng. 5.1.3. Lập mục lục cho các thuộc tính của đối tợng Trong Navigator 2.0, bạn có thể gọi thuộc tính của một đối tợng bằng tên thuộc tính hoặc bằng số thứ tự của nó. Tuy nhiên từ Navigator 3.0 trở đi, nếu ban đầu bạn định nghĩa một thuộc tính bằng tên của nó, bạn sẽ luôn luôn phải gọi nó bằng tên, và nếu bạn định nghĩa một thuộc tính bằng chỉ số thì bạn cũng luôn luôn phải gọi tới nó bằng chỉ số. Điều này ứng dụng khi bạn tạo một đối tợng với những thuộc tính của chúng bằng hàm xây dựng (nh ví dụ về kiểu đối tợng car ở phần trớc) và khi bạn định nghĩa những thuộc tính của riêng một đối tợng (nh mycar.color=”red”). Vì vậy nếu bạn định nghĩa các thuộc tính của đối tợng ngay từ đầu bằng chỉ số nh mycar[5]=”25 mpg”, bạn có thể lần lợt gọi tới các thuộc tính khác nh mycar[5]. Tuy nhiên điều này là không đúng đối với những đối tợng tơng ứng của HTML nh mảng form. Bạn có thể gọi tới các đối tợng trong mảng bởi số thứ tự hoặc tên của chúng. Ví dụ thẻ thứ hai trong một document có thuộc tính NAME là “myform” thì bạn có thể gọi tới form đó bằng document.form[1] hoặc document.form[“myForm”] hoặc document.myForm Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 76 5.1.4. Định nghĩa thêm các thuộc tính cho một kiểu đối tợng Bạn có thể thêm thuộc tính cho một kiểu đối tợng đã đợc định nghĩa trớc bằng cách sử dụng thuộc tính property. Thuộc tính đợc định nghĩa này không chỉ có tác dụng đối với một đối tợng mà có tác dụng đối với tất cả các đối tợng khác cùng kiểu.Ví dụ sau thực hiện thêm thuộc tính color cho tất cả các đối tợng kiểu car, sau đó gắn một giá trị màu cho thuộc tính color của đối tợng car1: car.prototype.color=null car1.color=”red” 5.1.5. Định nghĩa các cách thức Một cách thức là một hàm đợc liên kết với một đối tợng. Bạn định nghĩa một cách thức cũng có nghĩa là bạn định nghĩa một hàm chuẩn. Bạn có thể sử dụng cú pháp sau để gắn một hàm cho một đối tợng đang tồn tại: object.methodname = function_name Trong đó object là đối tợng đang tồn tại, methodname là tên cách thức và function_name là tên hàm Bạn có thể gọi cách thức này từ đối tợng nh sau: object.methodname() Bạn có thể định nghĩa cách thức cho một kiểu đối tợng bằng cách đa cách thức đó vào trong hàm xây dựng đối tợng. Ví dụ bạn có thể định nghĩa một hàm có thể định dạng và hiển thị các thuộc tính của các đối tợng kiểu car đã xây dựng ở phần trớc: function displayCar () { var result = “Abeautiful”+this.year+ “ ”+ this.make + “ ”+ this.model document.write(result) } Bạn có thể thêm cách thức này vào cho đối tợng car bằng cách thêm dòng lệnh sau vào hàm định nghĩa đối tợng this.displayCar= displayCar; Nh vậy có thể định nghĩa lại đối tợng car nh sau: function car(make, model, year,owner ){ this.make = make this.model = model this.year = year this.owner = owner this.displayCar= displayCar } Sau đó, bạn có thể gọi cách thức displayCar đối với mỗi đối tợng: car1.displayCar() car2.displayCar() Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 77 5.1.6. Sử dụng cho các tham chiếu đối tợng (Object References) JavaScript có một từ khoá đặc biệt là this mà bạn có thể sử dụng nó cùng với một cách thức để gọi tới đối tợng hiện thời. Ví dụ, giả sử bạn có một hàm validate dùng để xác nhận giá trị thuộc tính của một đối tợng nằm trong một khoảng nào đó: function validate(obj, lowval, hival){ if ( (obj.valuehival) ) alert(“Invalid value!”) } Sau đó bạn có thể gọi hàm validate từ mỗi thẻ sự kiện onChange: <INPUT TYPE=”TEXT” NAME=”AGE” SIZE=3 onChange=”validate(this,18,99)” > Khi liên kết với một thuộc tính form, từ khoá this có thể gọi tới form cha của đối t- ợng hiện thời. Trong ví dụ sau, myForm có chứa đối tợng Text và một nút bấm. Khi ngời sử dụng kích vào nút bấm, trờng text sẽ hiển thị tên form. Thẻ sự kiện onClick của nút bấm sử dụng this.form để gọi tới form cha là myForm. Form name:<INPUT TYPE=”text” NAME=”text1” VALUE=”Beluga”> <INPUT TYPE=”button” NAME=”button1” value=”Show Form Name” onClick=”this.form.text1.value=this.form.name”> 5.1.7. Xoá đối tợng Trong JavaScript cho Navigator 2.0, bạn không thể xoá các đối tợng-chúng vẫn tồn tại trong khi bạn đã rời khỏi trang đó. Trong khi JavaScript cho Navigator 3.0 cho phép bạn có thể xoá một đối tợng bằng cách đặt cho nó trỏ tới giá trị Null (nếu nh đó là lần cuối cùng gọi tới đối tợng). JavaScript sẽ đóng đối tợng đó ngay lập tức thông qua biểu thức gán. Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 78 6. Bảng tổng kết các từ khoá Sau đây là các từ đựoc định nghĩa là một phần trong ngôn ngữ JavaScript và không đợc sử dụng là tên biến: abstract eval int static boolean extends interface super break false long switch byte final native synchrinized case finally new this catch float null throw char for package throws class function parseFloat transient const goto parseInt true continue if private try default implements protected var do import public void double in return while else instanceof short with Khoa Toan tin, Đại học Quốc gia Hà Nội JavaScript 79 7. Tổng kết Nh vậy, tài liệu không những đã giới thiêu sơ qua về JavaScript, mà nó còn là sách tham khảo hết sức hữu ích để phát triển ứng dụng của bạn. Bạn có thể tham khảo toàn diện JavaScript trong quyển Teach Yourself JavaScript in 14 Days, hoặc JavaScript Guide Do JavaScript là ngôn ngữ còn mới và có sự thay đổi nhanh chóng, bạn nên đến với trang Web của hãng Netscape ( ) để có các thông tin mới nhất về ngôn ngữ này. Khoa Toan tin, Đại học Quốc gia Hà Nội
File đính kèm:
- gao_trinh_javascript_phan_2.pdf