giáo trình JavaScriptdoc tham khảo
Chơng Lời Nói đầu Với HTML and Microsoft FrontPage bạn biết cách tạo trang Web - nhiên mức biểu diễn thông tin cha phải trang Web động có khả đáp ứng kiện từ phía ngời dùng Hãng Netscape đa ngôn ngữ script có tên LiveScript để thực chức Sau ngôn ngữ đợc đổi tên thành JavaScript để tận dụng tính đại chúng ngôn ngữ lập trình Java Mặc dù có điểm tơng đồng Java JavaScript, nhng chúng hai ngôn ngữ riêng biệt JavaScript ngôn ngữ dới dạng script gắn với file HTML Nó không đợc biên dịch mà đợc trình duyệt diễn dịch Không giống Java phải chuyển thành mã dễ biên dịch, trình duyệt đọc JavaScript dới dạng mã nguồn Chính bạn dễ dàng học JavaScript qua ví dụ bạn thấy cách sử dụng JavaScript trang Web JavaScript ngôn ngữ dựa đối tợng, có nghĩa bao gồm nhiều kiểu đối tợng, ví dụ đối tợng Math với tất chức toán học Tuy JavaScript không ngôn ngữ hớng đối tợng nh C++ hay Java không hỗ trợ lớp hay tính thừa kế JavaScript đáp ứng kiện nh tải hay loại bỏ form Khả cho phép JavaScript trở thành ngôn ngữ script động Giống với HTML Java, JavaScript đợc thiết kế độc lập với hệ điều hành Nó chạy hệ điều hành có trình duyệt hỗ trợ JavaScript Ngoài JavaScript giống Java khía cạnh an ninh: JavaScript đọc viết vào file ngời dùng Các trình duyệt web nh Nescape Navigator 2.0 trở hiển thị câu lệnh JavaScript đợc nhúng vào trang HTML Khi trình duyệt yêu cầu trang, server gửi đầy đủ nội dung trang đó, bao gồm HTML câu lệnh JavaScript qua mạng tới client Client đọc trang từ đầu đến cuối, hiển thị kết HTML xử lý câu lệnh JavaScript chúng xuất Các câu lệnh JavaScript đợc nhúng trang HTML trả lời cho kiện ngời sử dụng nh kích chuột, nhập vào form điều hớng trang Ví dụ bạn kiểm tra giá trị thông tin mà ngời sử dụng đa vào mà không cần đến trình truyền mạng Trang HTML với JavaScript đợc nhúng kiểm tra giá trị đợc đa vào thông báo với ngời sử dụng giá trị đa vào không hợp lệ Mục đích phần giới thiệu ngôn ngữ lập trình JavaScript để bạn viết script vào file HTML Chơng Nhập môn JavaScript 2.1 Nhúng JavaScript vào file HTML Bạn nhúng JavaScript vào file HTML theo cách sau đây: Sử dụng câu lệnh hàm cặp thẻ Sử dụng file nguồn JavaScript Sử dụng biểu thức JavaScript làm giá trị thuộc tính HTML Sử dụng thẻ kiện (event handlers) thẻ HTML Trong đó, sử dụng cặp thẻ nhúng file nguồn JavaScript đợc sử dụng nhiều 2.1.1 Sử dụng thẻ SCRIPT Script đợc đa vào file HTML cách sử dụng cặp thẻ Các thẻ xuất phần hay file HTML Nếu đặt phần , đợc tải sẵn sàng trớc phần lại văn đợc tải Thuộc tính đợc định nghĩa thời cho thẻ LANGUAGE= dùng để xác định ngôn ngữ script đợc sử dụng Có hai giá trị đợc định nghĩa "JavaScript" "VBScript" Với chơng trình viết JavaScript bạn sử dụng cú pháp sau : Chú ý: Ghi không đợc đặt cặp thẻ nh ghi file HTML Cú pháp JavaScript tơng tự cú pháp C nên sử dụng // hay /* */ // INSERT ALL JavaScript HERE Điểm khác cú pháp viết ghi HTML JavaScript cho phép bạn ẩn mã JavaScript ghi file HTML, để trình duyệt cũ không hỗ trợ cho JavaScript đọc đợc nh ví dụ sau đây: Dòng cuối script cần có dấu // để trình duyệt không diễn dịch dòng dới dạng mã JavaScript Các ví dụ chơng không chứa đặc điểm ẩn JavaScript để mã dễ hiểu 2.1.2 Sử dụng file nguồn JavaScript Thuộc tính SRC thẻ cho phép bạn rõ file nguồn JavaScript đợc sử dụng (dùng phơng pháp hay nhúng trực tiếp đoạn lệnh JavaScript vào trang HTML) Cú pháp: Thuộc tính rấy hữu dụng cho việc chia sẻ hàm dùng chung cho nhiều trang khác Các câu lệnh JavaScript nằm cặp thẻ có chứa thuộc tinh SRC trừ có lỗi Ví dụ bạn muốn đa dòng lệnh sau vào cặp thẻ : document.write("Không tìm thấy file JS đa vào!"); Thuộc tính SRC đợc định rõ địa URL, liên kết đờng dẫn tuyệt đối, ví dụ: Các file JavaScript bên không đợc chứa thẻ HTML Chúng đợc chứa câu lệnh JavaScript định nghĩa hàm Tên file hàm JavaScript bên cần có đuôi js, server phải ánh xạ đuôi js tới kiểu MIME application/x-javascript Đó mà server gửi trở lại phần Header file HTML Để ánh xạ đuôi vào kiểu MIME, ta thêm dòng sau vào file mime.types đờng dẫn cấu hình server, sau khởi động lại server: Chú ý Khi bạn muốn xâu trích dẫn xâu khác cần sử dụng dấu nháy đơn ( ' ) để phân định xâu Điều cho phép script nhận xâu ký tự type=application/x-javascript Nếu server không ánh xạ đợc đuôi js tới kiểu MIME application/x-javascript , Navigator tải file JavaScript đợc thuộc tính SRC không cách Trong ví dụ sau, hàm bar có chứa xâu "left" nằm cặp dấu nháy kép: function bar(widthPct){ document.write(" ") } 2.3 Thẻ Cặp thẻ dùng để định rõ nội dung thông báo cho ngời sử dụng biết trình duyệt không hỗ trợ JavaScript Khi trình duyệt không hiểu thẻ bị lờ đi, đoạn mã nằm cặp thẻ đợc Navigator hiển thị Ngợc lại, trình duyệt có hỗ trợ JavaScript đoạn mã cặp thẻ đợc bỏ qua Tuy nhiên, điều xảy ngời sử dụng không sử dụng JavaScript trình duyệt cách tắt hộp Preferences/Advanced Ví dụ: Trang có sử dụng JavaScript Do bạn cần sử dụng trình duyệt Netscape Navigator từ version 2.0 trở đi! Hãy kích chuột vào để tải phiên Netscape Nếu bạn sử dụng trình duyệt Netscape từ 2.0 trở mà đọc đợc dòng chữ bật Preferences/Advanced/JavaScript lên 2.3 Hiển thị dòng text Trong hầu hết ngôn ngữ lập trình, khả sở hiển thị hình dòng text Trong JavaScript, ngời lập trình điều khiển việc xuất hình client dòng text file HTML JavaScript xác định điểm mà xuất file HTML dòng text kết đợc dịch nh dòng HTML khác hiển thị trang Hơn nữa, JavaScript cho phép ngời lập trình sinh hộp thông báo xác nhận gồm hai nút Ngoài ra, dòng text số hiển thị trờng TEXT TEXTAREA form Trong phần này, ta học cách thức write() writeln() đối tợng document Đối tợng document JavaScript đợc thiết kế sẵn hai cách thức để xuất dòng text hình client: write() writeln() Cách gọi cách thức đối tợng nh sau: object_name.property_name Dữ liệu mà cách thức dùng để thực công việc đợc đa vào dòng tham số, ví dụ: document.write("Test"); document.writeln('Test'); Cách thức write() xuất hình xâu Text nhng không xuống dòng, cách thức writeln() sau viết xong dòng Text tự động xuống dòng Hai cách thức cho phép xuất thẻ HTML Ví dụ: Cách thức write() xuất thẻ HTML Ouputting Text This text is plain. Ví dụ: Sự khác write() writeln(): Khi duyệt đợc kết quả: Hình 2.5: Sự khác write() writeln() 2.4 Giao tiếp với ngời sử dụng JavaScript hỗ trợ khả cho phép ngời lập trình tạo hộp hội thoại Nội dung hộp hội thoại phụ thuộc vào trang HTML có chứa đoạn script mà không làm ảnh hởng đến việc xuất nội dung trang Cách đơn giản để làm việc sử dụng cách thức alert() Để sử dụng đợc cách thức này, bạn phải đa vào dòng text nh sử dụng document.write() document.writeln() phần trớc Ví dụ: alert("Nhấn vào OK để tiếp tục"); Khi file chờ ngời sử dụng nhấn vào nút OK tiếp tục thực Thông thờng, cách thức alert() đợc sử dụng trờng hợp: Thông tin đa form không hợp lệ Kết sau tính toán không hợp lệ Khi dịch vụ cha sẵn sàng để truy nhập liệu Tuy nhiên cách thức alert() cho phép thông báo với ngời sử dụng cha thực giao tiếp với ngời sử dụng JavaScript cung cấp cách thức khác để giao tiếp với ngời sử dụng promt() Tơng tự nh alert(), prompt() tạo hộp hội thoại với dòng thông báo bạn đa vào, nhng cung cấp trờng để nhập liệu vào Ngời sử dụng nhập vào trờng kích vào OK Khi đó, ta xử lý liệu ngời sử dụng vừa đa vào Ví dụ: Hộp hội thoại gồm dòng thông báo, trờng nhập liệu, nút OK nút Cancel Chơng trình hỏi tên ngời dùng sau hiển thị thông báo ngắn sử dụng tên đa vào Ví dụ đợc lu vào file Hello.html JavaScript Exemple var name=window.prompt(Hello! Whats your name ?,); document.write(Hello + name + ! I hope you like JavaScript ); Khi duyệt có kết quả: Hình2.1: Hiển thị cửa sổ nhập tên Ví dụ hiển thị dấu nhắc nhập vào tên với phơng thức window.prompt Giá trị đạt đợc đợc ghi biến có tên name Biến name đợc kết hợp với chuỗi khác đợc hiển thị cửa sổ trình duyệt nhờ phơng thức document.write Hình 2.2: Hiển thị lời chào ngời nhập Bây bạn có ý tởng chức đạt đợc qua JavaScript, tiếp tục tìm hiểu thêm ngôn ngữ 2.5 Điểm lại lệnh mở rộng Lệnh/Mở rộng SCRIPT SRC LANGUAGE // /* */ document.write() document.writeln() alert() promt() Kiểu thẻ HTML Thuộc tính thẻ SCRIPT thuộc tính thẻ SCRIPT Ghi JavaScript Ghi JavaScript cách thức JavaScript Cách thức JavaScript Cách thức JavaScript Cách thức JavaScript Mô tả Hộp chứa lệnh JavaScript Giữ địa file JavaScript bên File phải có phần đuôi js Định rõ ngôn ngữ script đợc sử dụng (JavaScript VBScript) Đánh dấu ghi dòng đoạn script Đánh dấu ghi khối đoạn script Xuất xâu cửa sổ thời cách theo file HTML có đoạn script Tơng tự cách thức document.write() nhng viết xong tự xuống dòng Hiển thị dòng thông báo hộp hội thoại Hiển thị dòng thông báo hộp hội thoại đồng thời cung cấp trờng nhập liệu để ngời sử dụng nhập vào Chơng Biến JavaScript 3.1 Biến phân loạI biến Tên biến JavaScript phải bắt đầu chữ hay dấu gạch dới Các chữ số không đợc sử dụng để mở đầu tên biến nhng sử dụng sau ký tự Phạm vi biến hai kiểu sau: Biến toàn cục: Có thể đợc truy cập từ đâu ứng dụng đợc khai báo nh sau : x = 0; Biến cục bộ: Chỉ đợc truy cập phạm vi chơng trình mà khai báo Biến cục đợc khai báo hàm với từ khoá var nh sau: var x = 0; Biến toàn cục sử dụng từ khoá var, nhiên điều không thực cần thiết 3.2 Biểu diễn từ tố JavaScript Từ tố giá trị chơng trình không thay đổi Sau ví dụ từ tố: The dog ate my shoe true Chú ý Khác với C, JavaScript kiểu số CONST để biểu diễn giá trị không đổi 3.3 Kiểu liệu Khác với C++ hay Java, JavaScript ngôn ngữ có tính định kiểu thấp Điều có nghĩa kiểu liệu khai báo biến Kiểu liệu đợc tự động chuyển thành kiểu phù hợp cần thiết Ví dụ file Variable.Html: Datatype Example var fruit='apples'; var numfruit=12; numfruit = numfruit + 20; var temp ="There are " + numfruit + " " + "."; document.write(temp); Các trình duyệt hỗ trợ JavaScript xử lý xác ví dụ đa kết dới đây: Trình diễn dịch JavaScript xem biến numfruit có kiểu nguyên cộng với 20 có kiểu chuỗi kết hợp với biển temp Trong JavaScript, có bốn kiểu liệu sau đây: kiểu số nguyên, kiểu dấu phẩy động, kiểu logic kiểu chuỗi 1.1.1 KIểu nguyên (Interger) Số nguyên đợc biểu diễn theo ba cách: 1.1.2 Hệ số 10 (hệ thập phân) - biểu diễn số nguyên theo số 10, ý chữ số phải khác Hệ số (hệ bát phân) - số nguyên biểu diễn dới dạng bát phân với chữ số số Hệ số 16 (hệ thập lục phân) - số nguyên biểu diễn dới dạng thập lục phân với hai chữ số 0x Kiểu dấu phẩy động (Floating Point) Một literal có kiểu dấu phẩy động có thành phần sau: Phần nguyên thập phân Dấu chấm thập phân (.) Hình 3.1: Kết xử lý liệu Phần d Phần mũ Để phân biệt kiểu dấu phẩy động với kiểu số nguyên, phải có chữ số theo sau dấu chấm hay E Ví dụ: 9.87 -0.85E4 9.87E14 98E-3 1.1.3 Kiểu logic (Boolean) Kiểu logic đợc sử dụng để hai điều kiện : sai Miền giá trị kiểu có hai giá trị 1.1.4 true false Kiểu chuỗi (String) Một literal kiểu chuỗi đợc biểu diễn không hay nhiều ký tự đợc đặt cặp dấu " " hay ' ' Ví dụ: The dog ran up the tree The dog barked 100 Để biểu diễn dấu nháy kép ( " ), chuỗi sử dụng ( \" ), ví dụ: document.write( \This text inside quotes.\ ); 10 if (callingField == "result") { if (form.action[1].checked) { form.entry.value = Math.sqrt(form.result.value); } else { form.entry.value = form.result.value / 2; } } else { if (form.action[1].checked) { form.result.value=form.entry.value*form.entry.value; } else { form.result.value = form.entry.value * 2; } } } // STOP HIDING FROM OTHER BROWSERS > Value: Action: Double Square Result: Trong ví dụ này, thay đổi từ checkbox khó nhận biết Thay cho checkbox ví dụ trớc, ta sử dụng hai nút radio với hai giá trị khác nhau: double square Nh ta biết truy nhập đến nút radio qua mảng, hai nút truy nhập action[0] action[1] Bằng cách này, bạn cần thay đổi tham chiếu đến hàm calculate() từ form.square.checked thành form.action[1].checked 4.1.27 Phần tử reset Sử dụng đối tợng reset, bạn tác động ngợc lại để click vào nút Reset Cũng giống đối tợng button, đối tợng reset có hai thuộc tính name value, cách thức click(), thẻ kiện onClick Hầu hết ngời lập trình khong sử dụng thẻ kiện onClick nút reset để kiểm tra giá trị nút này, đối tợng reset thờng dùng để xoá form Ví dụ sau minh hoạ cách sử dụng nút reset để xoá giá trị form Ví dụ: 51 reset Example //SCRIPT> 4.1.28 Phần tử select Danh sách lựa chọn form HTML xuất menu drop-down danh sách cuộn đợc đối tợng đợc lựa chọn Các danh dách đợc xây dựng cách sử dụng hai thẻ SELECT OPTION Ví dụ: 1 2 3 tạo ba thành phần menu thả drop-down với ba lựa chọn 1,2 Sử dụng thuộc tính SIZE bạn tạo ta danh sách cuộn với số phần tử hiển thị lần thứ Để bật menu drop-down menu cuộn với hai thành phần hiển thị, bạn sử dụng nh sau: 1 2 3 Trong hai ví dụ trên, ngời sử dụng có lựa chọn Nếu sử dụng thuộc tính MULTIPLE, bạn cho phép ngời sử dụng lựa chọn nhiều giá trị danh sách lựa chọn: 1 2 3 52 Danh sách lựa chọn JavaScript đối tợng select Đối tợng tạo vài thành phần tơng tự button radio Với thành phần lựa chọn, danh sách lựa chọn đợc chứa mảng đợc đánh số từ Trong trờng hợp này, mảng thuộc tính đối tợng select gọi options Cả việc lựa chọn option phần tử option riêng biệt có thuộc tính Bổ sung thêm vào mảng option, phần tử select có thuộc tính selectedIndex, có chứa số thứ tự option đợc lựa chọn thời Mỗi option danh sách lựa chọn có vài thuộc tính: DEFAULTSELECTED: cho biết option có đợc mặc định lựa chọn thẻ OPTION hay không INDEX: chứa giá trị số thứ tự option hịên thời mảng option SELECTED: cho biết trạng thái thời option TEXT: có chứa giá trị dòng text hiển thị menu cho option, thuộc tính value giá trị thẻ OPTION Đối tợng select cách thức đợc định nghĩa sẵn Tuy nhiên, đối tợng select có ba thẻ kiện, onBlue, onFocus, onChange, chúng đối tợng text Ví dụ bạn có danh sách lựa chọn sau: 1 2 3 Khi lần hiển thị bạn truy nhập tới thông tin sau: example.options[1].value = "The Second" example.options[2].text = "3" example.selectedIndex = example.options[0].defaultSelected = true example.options[1].selected = false Nếu ngời sử dụng kích vào menu lựa chọn option thứ hai, thẻ onFocus thực hiện, giá trị thuộc tính là: example.options[1].value = "The Second" example.options[2].text = "3" example.selectedIndex = example.options[0].defaultSelected = true example.options[1].selected = true Sửa danh sách lựa chọn Navigator 3.0 cho phép thay đổi nội dung danh sách lựa chọn từ JavaScript cách liên kết giá trị cho thuộc tính text thực thể danh sách Ví dụ, ví dụ trớc, bạn tạo danh sách lựa chọn nh sau: 1 2 3 Có thể thay đổi đợc dòng text hiển thị nút thứ hai thành "two" băng: 53 example.options[1].text = "two"; Có thể thêm lựa chọn vào danh sách cách sử dụng đối tợng xây dựng Option() theo cú pháp: newOptionName = new Option(optionText, optionValue, defaultSelected, selected); selectListName.options[index] = newOptionName; Việc tạo đối tợng option() với dòng text đợc trớc, defaultSelected selected nh định giá trị kiểu Boolean Đối tợng đợc liên kết vào danh sách lựa chọn đợc thực index Các lựa chọn bị xoá danh sách lựa chọn cách gắn giá trị null cho đối tợng muốn xoá selectListName.options[index] = null; 1.1 Phần tử submit Nút Submit trờng hợp đặc biệt button, nh nút Reset Nút đa thông tin từ trờng form tới địa URL đợc thuộc tính ACTION thẻ form sử dụng cách thức METHOD thẻ FORM Giống nh đối tợng button reset, đối tợng submit có sẵn thuộc tính name value, cách thức click() thẻ kiện onClick 1.2 Phần tử Text Phần tử nằm phần tử hay đợc sử dụng form HTML Tơng tự nh trờng Password, trờng text cho phép nhập vào dòng đơn, nhng ký tự bình thờng đối tợng text có ba thuộc tính:defautValue, name value Ba cách thức mô kiện ngời sử dụng: focus(), blur() select() Có thẻ kiện là: obBlur, onFocus, onChange, onSelect Chú ý kiện thực trỏ đợc kích trờng text Bảng sau mô tả thuộc tính cách thức đối tợng text Bảng Các thuộc tính cách thức đối tợng text Cách thức thuộc Mô tả tính defaultValue Chỉ giá trị mặc định phần tử đợc thẻ INPUT (thuộc tính) name Tên đối tợng đợc thẻ INPUT (thuộc tính) value Giá trị thời phần tử (thuộc tính) focus() Mô tả việc trỏ tới trờng text (cách thức) blur() Mô tả việc trỏ rời trờng text (cách thức) select() Mô tả việc lựa chọn dòng text trờng text (cách thức) Một ý quan trọng gán giá trị cho trờng text cách liên kết giá trị với thuộc tính value Trong ví dụ sau đây, dòng text đợc đa vào trờng đợc lặp lại trờng text thứ hai, dòng text đợc đa vào trờng text thứ hai lại đợc lặp lại trờng texxt thứ Khả áp dụng để tự động cập nhật thay đổi liệu Ví dụ Tự động cập nhật trờng text text Example 1.3 Phần tử Textarea Thẻ TEXTAREA cung cấp hộp cho phép nhập số dòng text ngời thiết kế định trớc Ví dụ: Default Text Here ví dụ tạo 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 trờng vào lần hiển thị Cũng nh phần tử text , JavaScript cung cấp cho bạn thuộc tính defaultValue, name, value, cách thức focus(), select(), blur(), thẻ kiện onBlur, onForcus, onChange, onSelect Mảng elements[] sau: Các đối tợng form đợc gọi tới mảng elements[] Ví dụ bạn tạo form bạn gọi tới ba thành phần nh sau: document.elements[0], document.elements[1], document.elements[2], gọi document.testform.one, document.testform.two, document.testform.three Thuộc tính thờng đợc sử dụng mối quan hệ phần tử dùng tên chúng Mảng form[] Các thẻ kiện đợc thiết kế để làm việc với form riêng biệt trờng thời điểm, hữu dụng phép gọi tới form có liên quan trang Mảng form[] đề cập đến có nhiều xác định nhân form trang have information in a single field match in all three forms Có thể gọi document.forms[] thay gọi tên form Trong script này, bạn có hai trờng text để nhập 55 nằm hai form độc lập với Sử dụng mảng form bạn tơng tác giá trị trờng hai form lúc ngời sử dụng thay đổi giá trị form forms[] Example Mặt khác, bạn truy nhập đến form tên form đợc đặt thẻ FORM: Khi bạn gọi document.forms["name"] document.name Xem lại lệnh mở rộng Lệnh/ Mở rộng blur() form.action form.elemrnts form.encoding form,name form.target form.submit type onSubmit button checkbox pasword radio reset Kiểu cách JavaScript cách JavaScript thuộc JavaScript thức thức tính Mô tả Mô tả việc dịch chuyển trỏ từ phần tử Xâu chứa giá trị thuộc tính ACTION thẻ FORM mảng chứa danh sách phần tử form (nh checkbox, trờng text, danh sách lựa chọn) xâu chứa kiểu MIME sử dụng chuyển thông tin từ form tới server Xâu chứa giá trị thuộc tính NAME thẻ FORM Xâu chứa tên cửa sổ đích form submition Mô tả việc submit form HTML thuộc tính JavaScript thuộc tính JavaScript thuộc tính JavaScript cách thức JavaScript thuộc tính ánh xạ kiểu phần tử form JavaScript thành xâu Thẻ kiện thẻ kiện cho việc submit thuộc tính HTML Thuộc tính kiểu cho nút bấm HTML () thuộc tính HTML Thuộc tính kiểu cho checkbox HTML () thuộc tính HTML Thuộc tính kiểu cho dòng pasword HTML() thuộc tính HTML Thuộc tính kiểu cho nút radio HTML () thuộc tính HTML Thuộc tính kiểu cho nút reset 56 SELECT OPTION thẻ HTML thẻ HTML submit thuộc tính HTML text thuộc tính HTML TEXTAREA Thẻ HTML name value click() onClick checked d defaultChecke focus() blur() select() onFocus() tính cách JavaScript thuộc JavaScript thức thuộc JavaScript thuộc JavaScript cách JavaScript cách JavaScript cách JavaScript Thẻ kiện tính onBlur Thẻ kiện onChange Thẻ kiện onSelect Thẻ kiện index length d thuộc JavaScript thuộc JavaScript dafautlSelecte options text thuộc JavaScript thuộc JavaScript thuộc JavaScript thuộc JavaScript thuộc tính tính tính thức thức thức tính tính tính tính tính HTML () Hộp thẻ cho danh sách lựa chọn lựa chọn danh sách lựa chọn(Option 1Option 2) Thuộc tính kiểu nút submit () Thuộc tính kiểu trờng form () Hộp thẻ cho nhiều dòng text ( defautl text ) Xâu chứa tên phần tử HTML (button, checkbox, password ) Xâu chứa giá trị hiên thời phần tử HTML(button, checkbox, password ) Mô tả việc kích vào phần tử form (button, checkbox,password) Thẻ kiện cho kiện kích (button, checkbox, radio button, reset, selection list, submit) Giá trị kiểu Boolean mô tả lựa chọn check(checkbox, radio button) Xâu chứa giá trị mặc định phần tử HTML (password, text, textarea) Mô tả việc trỏ tới phần tử (password, text, textarea) Mô tả việc trỏ rời khỏi phần tử (password, text, textarea) Mô tả việc lựa chọn dòng text trờng (password, text, textarea) Thẻ kiện cho kiện focus(password, selection list, text, textarea) Thẻ kiện cho kiện blur (password, selection list, text, textarea) Thẻ kiện cho kiện giá trị trờng thay đổi (password, selection list, text, textarea) Thẻ kiện ngời sử dụng chọn dòng text trờng (password, text, textarea) Là số nguyên mô tả lựa chọn thời nhóm lựa chọn (radio button) Số nguyên mô tả tổng số lựa chọn nhóm lựa chọn (radio button) Giá trị Boolean mô tả có lựa chọn đợc đặt mặc định (seledtion list) Mảng lựa chọn danh sách lựa chọn Dòng text hiển thị cho thành phần 57 TABLE TR ms[] g() JavaScript thẻ HTML thẻ HTML TD thẻ HTML COLSPAN thuộc tính HTML ROWSPAN thuộc tính HTML BODER thuộc tính HTML document.for string.substrin Math.floor() string.length thuộc JavaScript cách JavaScript cách JavaScript thuộc JavaScript tính thức thức tính menu danh sách lựa chọn Hộp thẻ cho bảng HTML Hộp thẻ cho hàng bảng HTML Hộp thẻ cho ô hàng bảng HTML Là thuộc tính thẻ TD mô tả ô bảng có nhiều cột Là thuộc tính thẻ TD mô tả ô bảng có nhiều hàng Là thuộc tính thẻ TABLE mô tả độ rộng đờng viền bảng mảng đối tợng form với danh sách form document Trả lại xâu xâu string từ tham số vị trí ký tự đầu đến vị trí ký tự cuối Trả lại giá trị nguyên nhỏ giá trị tham số đa vào Giá trị nguyên số thứ tự ký tự cuối xâu string 58 Mô hình đối tợng (Object Model) Đối tợng thuộc tính Nh biết, đối tợng JavaScript có thuộc tính kèm với Bạn truy nhập đến thuộc tính cách gọi : objectName.propertyName Cả tên đối tợng tên thuộc tính nhạy cảm Bạn định nghĩa thuộc tính cách gán cho giá trị Ví dụ, giả sử có đối tợng tên myCar (trong trờng hợp giả sử đối tợng tồn sẵn sàng) Bạn lấy thuộc tính có tên make, model year nh sau: myCar.make = Ford myCar.model = Mustang myCar.year = 69; Có mảng lu trữ tập hợp giá trị tham chiếu tới biến Thuộc tính mảng JavaScript có quan hệ mật thiết với nhau, thực chúng khác cách giao tiếp với cấu trúc liệu Ví dụ truy nhập tới thuộc tính đối t ợng myCar mảng nh sau: myCar[make] = Ford myCar[model] = Mustang myCar[year] = 69; Kiểu mảng đợc hiểu nh mảng có khả liên kết phần tử liên kết đến giá trị xâu Để minh hoạ việc mày đ ợc thực nh nào, hàm sau hiển thị thuộc tính đối tợng thông qua tham số kiểu đối tợng 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) lên: myCar.make = Ford myCar.model = Mustang myCar.year = 69; Tạo đối tợng Cả JavaScript client-side server-side có số đối tợng đợc định nghĩa trớc Tuy nhiên, bạn tạo đối tợng riêng bạn Trong JavaScript 1.2, bạn muốn tạo đối tợng kiểu đối tợng, bạn tạo cách sử dụng khởi tạo đối tợng Hoặc bạn muốn tạo nhiều cá thể kiểu đối tợng, bạn tạo hàm xây dựng trớc, sau tạo đối tợng có kiểu hàm toán tử new 59 5.1.1 Sử dụng khởi tạo đối tợng Trong phiên trớc Navigator, bạn tạo đối tợng cách sử dụng hàm xây dựng chúng sử dụng hàm đợc cung cấp vài đối tợng khác để đạt đợc mục đích Tuy nhiên, Navigator 4.0, bạn tạo đối tợng cách sử dụng khởi tạo đối tợng.Bạn sử dụng cách bạn muốn tạo cá thể đơn lẻ nhiều cá thể đối tợng Cú pháp để tạo đối tợng cách khởi tạo đối tợng (Object Initializers): objectName={property1: value1, property2: value2, , propertyN: valueN} Trong objectName tên đối tợng mới, propertyI xác minh (có thể tên, số xâu ký tự) valueI biểu thức mà giá trị đợc gán cho propertyI Có thể lựa chọn khởi tạo tên đối tợng khai báo Nếu nh bạn không cần dùng đến đối tợng chỗ, bạn không cần phải gán cho biến Nếu đối tợng đợc tạo cách khởi tạo đối tợng mức cao nhất, lần đối tợng xuất biểu thức, JavaScript đánh giá lại lần Ngoài ra, sử dụng việc khởi tạo hàm lần gọi hàm, đối tợng đợc khởi tạo 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 tạo đối tợng gắn vào biến x biểu thức condition đợc đánh giá Còn ví dụ sau tạo đối tợng myHonda với thuộc tính: myHonda={color:red,wheels:4,engine:{cylinder:4,size:2.2}} Chú ý thuộc tính engine đối tợng với thuộc tính Trong Navigator 4.0, bạn sử dụng khởi tạo để tạo mảng Cú pháp để tạo mảng cách khác với tạo đối tợng: arrayName=[element0, element1, ,elementN] Trong đó, arrayName tên mảng mới, elementI giá trị phần tử vị trí mảng Khi bạn tạo mảng cách sử dụng phơng pháp khởi tạo, coi giá trị phần tử mảng, chiều dài mảng số tham số Bạn không cần phải định rõ tất phần tử mảng Nếu bạn đặt hai dấu phẩy vào hàng, mảng đợc tạo với chốn trống cho phần tử cha đợc định nghĩa nh ví dụ dới đây: Nếu mảng đợc tạo cách khởi tạo(initializer) mức cao nhất, lần mảng xuất biểu thức, JavaScript đánh giá lại lần Ngoài ra, sử dụng việc khởi tạo hàm lần gọi hàm, mảng đợc khởi tạo lần Ví dụ1: Tạo mảng coffees với phần tử độ dài mảng 3: coffees = [French Roast,Columbian,Kona] Ví dụ 2: Tạo mảng với phần tử đợc khởi đầu phần tử rỗng: fish = [Lion, , Surgeon] nghĩa 5.1.2 Với biểu thức này, fish[0] Lion, fish[2] Surgeon, fish[2] cha đợc định Sử dụng hàm xây dựng(Constructor Function) Bạn tạo đối tợng riêng với hai bớc sau: Định nghĩa kiểu đối tợng cách viết hàm xây dựng Tạo cá thể đối tợng toán tử new 60 Để định nghĩa kiểu đối tợng, ta phải tạo hàm để định rõ tên, thuộc tính cách thức kiểu đối tợng Ví dụ giả sử bạn muốn tạo kiểu đối tợng ô tô với tên car, có thuộc tính make, model, year color, để thực việc viế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 thuộc tính đối tợng phải thông qua tham số hàm Ví dụ, bạn tạo đối tợng kiểu car nh sau: mycar = new car(Eagle,Talon TSi,1993) Câu lệnh tạo đối tợng mycar liên kết giá trị đợc đa vào với thuộc tính Khi giá trị mycar.make Eagle, giá trị mycar.model Talon TSi, mycar.year số nguyên 1993 Cứ nh bạn tạo nhiều đối tợng kiểu car Một đối tợng có thuộc tính mà thân đối tợng Ví dụ bạn định nghĩa thêm đối tợng khác person nh sau: function person(name, age, sex){ this.name=name this.age=age this.sex=sex } Và sau ta tạo hai ngời mới: rank = new person(Rank McKinnon,33,M) ken = new person(Ken John,39,M) Bây 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 bạn 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 phải qua xâu ký tự hay giá trị số tạo đối tợng, ta cần đa hai đối tợng đợc tạo câu lệnh vào dòng tham số đối tợng tạo Ta lấy đợc thuộc tính đối tợng owner câu lênh sau: car2.owner.name ví dụ: Chú ý bạn tạo thuộc tính cho đối tợng trớc định nghĩa nó, car1.color=black Nh vậy, thuộc tính color đối tợng car1 đợc gán black Tuy nhiên, không gây tác động tới đối tợng kiểu car khác Nếu muốn thêm thuộc tính cho tất đối tợng phải định nghĩa lại hàm xây dựng đối tợng 61 5.1.3 Lập mục lục cho thuộc tính đối tợng Trong Navigator 2.0, bạn gọi thuộc tính đối tợng tên thuộc tính số thứ tự Tuy nhiên từ Navigator 3.0 trở đi, ban đầu bạn định nghĩa thuộc tính tên nó, bạn luôn phải gọi tên, bạn định nghĩa thuộc tính số bạn luôn phải gọi tới số Điều ứng dụng bạn tạo đối tợng với thuộc tính chúng hàm xây dựng (nh ví dụ kiểu đối tợng car phần trớc) bạn định nghĩa thuộc tính riêng đối tợng (nh mycar.color=red) Vì bạn định nghĩa thuộc tính đối tợng từ đầu số nh mycar[5]=25 mpg, bạn lần lợt gọi tới thuộc tính khác nh mycar[5] Tuy nhiên điều đối tợng tơng ứng HTML nh mảng form Bạn gọi tới đối tợng mảng số thứ tự tên chúng Ví dụ thẻ thứ hai document có thuộc tính NAME myform bạn gọi tới form document.form[1] document.form[myForm] document.myForm 5.1.4 Định nghĩa thêm thuộc tính cho kiểu đối tợng Bạn thêm thuộc tính cho kiểu đối tợng đợc định nghĩa trớc cách sử dụng thuộc tính property Thuộc tính đợc định nghĩa tác dụng đối tợng mà có tác dụng tất đối tợng khác kiểu.Ví dụ sau thực thêm thuộc tính color cho tất đối tợng kiểu car, sau gắn giá trị màu cho thuộc tính color đối tợng car1: car.prototype.color=null car1.color=red 5.1.5 Định nghĩa cách thức Một cách thức hàm đợc liên kết với đối tợng Bạn định nghĩa cách thức có nghĩa bạn định nghĩa hàm chuẩn Bạn sử dụng cú pháp sau để gắn hàm cho đối tợng tồn tại: object.methodname = function_name Trong object đối tợng tồn tại, methodname tên cách thức function_name tên hàm Bạn gọi cách thức từ đối tợng nh sau: object.methodname() Bạn định nghĩa cách thức cho kiểu đối tợng cách đa cách thức vào hàm xây dựng đối tợng Ví dụ bạn định nghĩa hàm định dạng hiển thị thuộc tính đố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 thêm cách thức vào cho đối tợng car cách thêm dòng lệnh sau vào hàm định nghĩa đối tợng this.displayCar= displayCar; Nh đị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 } 62 Sau đó, bạn gọi cách thức displayCar đối tợng: car1.displayCar() car2.displayCar() 5.1.6 Sử dụng cho tham chiếu đối tợng (Object References) JavaScript có từ khoá đặc biệt this mà bạn sử dụng với cách thức để gọi tới đối tợng thời Ví dụ, giả sử bạn có hàm validate dùng để xác nhận giá trị thuộc tính đối tợng nằm khoảng đó: function validate(obj, lowval, hival){ if ( (obj.valuehival) ) alert(Invalid value!) } Sau bạn gọi hàm validate từ thẻ kiện onChange: Khi liên kết với thuộc tính form, từ khoá this gọi tới form cha đối tợng thời Trong ví dụ sau, myForm có chứa đối tợng Text nút bấm Khi ngời sử dụng kích vào nút bấm, trờng text hiển thị tên form Thẻ kiện onClick nút bấm sử dụng this.form để gọi tới form cha myForm Form name:5.1.7 Xoá đối tợng Trong JavaScript cho Navigator 2.0, bạn xoá đối tợng-chúng tồn bạn rời khỏi trang Trong JavaScript cho Navigator 3.0 cho phép bạn xoá đối tợng cách đặt cho trỏ tới giá trị Null (nếu nh lần cuối gọi tới đối tợng) JavaScript đóng đối tợng thông qua biểu thức gán 63 Bảng tổng kết từ khoá Sau từ đựoc định nghĩa phần ngôn ngữ JavaScript không đợc sử dụng 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 import public void double in return while else instanceof short with 64 Tổng kết Nh vậy, tài liệu giới thiêu sơ qua JavaScript, mà sách tham khảo hữu ích để phát triển ứng dụng bạn Bạn tham khảo toàn diện JavaScript Teach Yourself JavaScript in 14 Days, JavaScript Guide Do JavaScript ngôn ngữ có thay đổi nhanh chóng, bạn nên đến với trang Web hãng Netscape ( http://www.netscape.com ) để có thông tin ngôn ngữ 65