Bài giảng Javascript tổng quan

Dynamic HTML DHTML = HTML + CSS + Ngôn ngữ script Ngôn ngữ script: là ngôn ngữ dạng thông dịch, giúp tăng tính tương tác giữa trang web với người dùng Javascript VBscript

pdf64 trang | Chia sẻ: lylyngoc | Lượt xem: 1827 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Bài giảng Javascript tổng quan, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ThS Nguyễn Minh Vi BM Tin học – ĐH An Giang Javascript TỔNG QUAN Giới thiệu  Dynamic HTML DHTML = HTML + CSS + Ngôn ngữ script  Ngôn ngữ script: là ngôn ngữ dạng thông dịch, giúp tăng tính tương tác giữa trang web với người dùng  Javascript  VBscript  … Javascript  Là ngôn ngữ kịch bản dùng để tạo các script ở cả server-side và client-side  Javascript tại server-side (thực thi trên web server):  Kết nối cơ sở dữ liệu  Chia sẻ thông tin cho các người dùng của ứng dụng  Truy cập vào hệ thống file trên server Javascript  Javascript tại client-side (thực thi trên web browser):  Tương tác với người dùng, phát sinh các hành động để đáp lại các sự kiện  Thay đổi nội dung, vị trí các phần tử một cách “động”  Kiểm tra tính hợp lệ của dữ liệu trước khi gửi về web server để xử lý Chèn javascript vào trang html  Liên kết file javascript bên ngoài <script language="Javascript" src=“tên_file.js">  Chèn trực tiếp vào tài liệu html // các câu lệnh  Dùng như giá trị thuộc tính của thẻ <a onClick="alert('Hello world!');“ href="">Click Ví dụ document.write('Sử dụng hộp thoại trong Javascript'); alert('Chào mừng bạn đến với Javascript!'); confirm('Bạn đã sẵn sàng chưa?'); Quy tắc ngữ pháp  Phân biệt chữ hoa và chữ thường  Mỗi câu lệnh kết thúc bởi ;  Dùng cùng cặp ký hiệu mở đóng  Không phân biệt các ký tự khoảng trắng Biến  Tên biến: có thể chứa chữ cái, chữ số, ký hiệu _  Không bắt đầu bằng chữ số  Khai báo bằng từ khóa var VD: var x = 10;  Biến có phạm vi xác định  Toàn cục  Cục bộ Kiểu dữ liệu  Numbers  Boolean  Strings  Null  Object (cấp phát bằng từ khóa new) Lưu ý: một biến có thể thuộc bất kỳ kiểu dữ liệu nào tùy ý Hằng số  Số nguyên: có thể biểu diễn bằng hệ thập phân, nhị phân, thập lục phân  Số thực: có thể có dấu thập phân hoặc e hay E theo sau số nguyên (lũy thừa cơ số 10), số nguyên có thể dương hoặc âm  Boolean: True hoặc False  Null: null (giữ chỗ cho biến)  Chuỗi: đặt trong cặp nháy đơn ‘ ’ hoặc nháy kép “ ” Ký tự đặc biệt trong chuỗi  \b backspace  \f form feed  \n new line  \r carriage return  \t tab Toán tử Số học +, -, *, /, % (chia lấy dư), - (lấy số đối), ++, -- So sánh ==, !=, >, >=, <, <= Logic && (and), || (or), ! (not) Chuỗi + (ghép chuỗi) Khác (condition) ? trueVal : falseVal typeof(value) Biểu thức  Biểu thức là sự kết hợp các biến, hằng số thông qua các toán tử  Các dạng biểu thức  số học: trả về trị số  logic: trả về trị boolean  chuỗi: trả về trị chuỗi Biểu thức quy tắc  Là mẫu để tìm chuỗi ký tự cùng dạng trong một chuỗi  Mẫu đơn giản:  tìm chính xác theo các ký tự trong mẫu  VD: /abc/  Mẫu gồm các ký tự đơn giản và đặc biệt  VD: /ab*c/ Biểu thức quy tắc  Một số ký tự đặc biệt  ? ký tự (trước nó) xuất hiện 0 hoặc 1 lần  * xuất hiện 0 hoặc nhiều lần  + xuất hiện 1 hoặc nhiều lần  {n,m} xuất hiện ít nhất n, nhiều nhất m lần  \w ký tự alphanumeric  \d ký tự số  \s ký tự trắng  […] bất kỳ ký tự nào trong ngoặc Biểu thức quy tắc  Các phương thức:  test kiểm tra mẫu trả về trị true / false  search kiểm tra mẫu trả về chỉ số / -1  exec tìm mẫu và trả về mảng thông tin  match tìm mẫu và trả về mảng thông tin / null  replace tìm và thay chuỗi con  split tách chuỗi thành mảng chuỗi con  Cách gọi phương thức: tên_đối_tượng.tên_phương_thức(tham_số) Biểu thức quy tắc  VD: mau = /abc/ s = mau.test('abcde'); alert(s); Các câu lệnh điều khiển  Điều kiện:  if … else  switch  Lặp  for  while  do … while  for … in  Các từ khóa  break  continue  with Ví dụ  VD: arrMau = new Array('xanh','vàng','đỏ'); for (var i in arrMau) document.write('arrMau[' + i + ']=' + arrMau[i]); Hàm  Hàm định nghĩa sẵn  eval(string) //tính giá trị chuỗi  isNaN(value) //ktra không là số  Hàm do người dùng định nghĩa  Cú pháp function tên_hàm(tsố_1, tsố_2, …) { // các_câu_lệnh }  Hàm có thể trả về giá trị bằng lệnh return Hàm – Ví dụ  Khai báo hàm function Cong(so1, so2){ var tong = so1 + so2; return (tong); }  Gọi hàm var x = Cong(10, 5); ThS Nguyễn Minh Vi BM Tin học – ĐH An Giang Javascript CÁC ĐỐI TƯỢNG CƠ BẢN Đối tượng (Object)  Một đối tượng là một gói dữ liệu toàn diện, bao gồm:  các thuộc tính (biến)  các phương thức (hàm)  Truy cập vào thuộc tính tên_đối_tượng.tên_thuộc_tính  Truy cập vào phương thức tên_đối_tượng.tên_phương_thức() Phân cấp đối tượng  Phân cấp đối tượng trong một trang web Các đối tượng trình duyệt Các đối tượng kịch bản Các phần tử HTML Document History Location … String Math Date … Mảng  Mảng dùng để lưu nhiều giá trị vào một biến, phân biệt bởi chỉ số (bắt đầu từ 0)  Mảng trong Javascript được xem như đối tượng. Tạo mảng: mang = new Array([ptử_1, …])  Các thuộc tính: length, indexOf  Các phương thức của mảng: pop, push, reverse, shift, sort Mảng  VD: arrColor = new Array(3); arrColor[0] = 'red'; arrColor[1] = 'green'; arrColor[2] = 'blue'; document.write('' + arrColor); // sắp xếp arrColor.sort(); document.write('' + arrColor); // thêm phần tử arrColor.push('white'); document.write('' + arrColor); Đối tượng String  Dùng để thao tác với chuỗi văn bản  Các cách tạo chuỗi  khai báo biến var s = 'Javascript'; s = 'Javascript';  dùng hàm khởi tạo var s = new String('Javascript'); Đối tượng String  Thuộc tính  length độ dài chuỗi  Phương thức  fontcolor() xác định màu chữ  bold() đậm  italics() nghiêng  strike() gạch giữa  sup() chỉ số trên  sub() chỉ số dưới  toLowerCase() chuyển chữ thường  toUpperCase() chuyển chữ hoa  … Đối tượng String  Ví dụ: s = 'Javascript'; document.write('Độ dài chuỗi ' + s + ' là ' + s.length); document.write('Chữ hoa: ' + s.toUpperCase()); document.write('Chữ thường: ' + s.toLowerCase()); document.write('In đậm: ' + s.bold()); Đối tượng Math  Dùng để thao tác các phép tính toán học nâng cao  Thuộc tính:  PI giá trị pi (~3.1415)  LN10 giá trị lg (~2,302)  E giá trị hằng số Euler (~2.718) Đối tượng Math  Phương thức  abs(num) lấy trị tuyệt đối  sqrt(num) lấy căn bậc 2  sin(num) lấy sin (tính bằng radian)  cos(num) lấy cosin (tính bằng radian)  min(num1, num2) lấy số nhỏ nhất  max(num1, num2) lấy số lớn nhất  round(num) làm tròn Đối tượng Math  Ví dụ: function TinhDT(bk) { var dt; dt = Math.PI * bk * bk; alert ('Diện tích hình tròn có bán kính ' + bk + ' là ' + dt); } Đối tượng Date  Dùng để thiết lập, lấy và xử lý các thông tin thời gian  Đối tượng Date lưu thời gian theo số mili giây, tính từ 01/01/1970 00:00:00  Cách tạo tên_biến = new Date(tham_số); Tham số có thể:  rỗng  dạng 'mm dd, yyyy, hh:mm:ss' Đối tượng Date  Thuộc tính: không có  Phương thức: Date có các nhóm phương thức sau  set thiết lập giá trị  get lấy giá trị  to trả về các chuỗi giá trị từ Date  parse và UTC phân tích các chuỗi  Các giá trị  giây, phút 0 – 59  giờ 0 – 23  ngày (tuần) 0 – 6  ngày (tháng) 1 – 31  tháng 0 – 11  năm từ 1900 trở đi Đối tượng Date Nhóm phương thức get  getDate lấy ngày trong tháng (1-31)  getDay lấy ngày trong tuần (0-6)  getMonth lấy tháng (0-11)  getYear lấy năm (năm – 1990)  getTime lấy số mili giây (từ 1/1/1970)  getHours lấy giờ (0-23)  getMinutes lấy phút (0-59)  getSeconds lấy giây (0-59) Đối tượng Date Nhóm phương thức set  setDate gán ngày trong tháng (1-31)  setMonth gán tháng (0-11)  setYear gán năm (năm lớn hơn 1990)  setTime gán số mili giây (từ 1/1/1970)  setHours gán giờ (0-23)  setMinutes gán phút (0-59)  setSeconds gán giây (0-59) Đối tượng Date  Nhóm phương thức to  toGMTString chuyển sang dạng GMT  toLocalString chuyển sang dạng địa phương  Nhóm phương thức Parse và UTC  Date.parse(date string) số mili giây trong một chuỗi ngày tính từ 1/1/1970  Date.UTC(year, month, day, hours, mins, secs) số mili giây của một đối tượng thời gian tính từ 1/1/1970 Đối tượng Date  Ví dụ: d = new Date(); document.write('Hôm nay là ngày ' + d.getDate() + ' tháng ' + (d.getMonth()+1) + ' năm ' + (d.getYear()+1900)); ThS Nguyễn Minh Vi BM Tin học – ĐH An Giang Javascript CÁC ĐỐI TƯỢNG TRÌNH DUYỆT Đối tượng Window  Dùng để truy xuất thông tin về trạng thái cửa sổ làm việc  Thuộc tính:  document tài liệu html trong cửa sổ trình duyệt  history lưu trữ thông tin các url đã được thăm  location thông tin url hiện tại  …  Phương thức:  alert()/prompt()/confirm()hiển thị các hộp thoại  blur()/focus() đặt đối tượng mất/nhận tiêu điểm  close()/open() đóng cửa sổ, mở cửa sổ mới  …  Xem thêm Đối tượng Window  Ví dụ: Nhập URL <input type="button" name="btn" value="Mở" onClick="window.open(frm.txt.value)"/> Đối tượng Location  Thông tin về URL hiện hành  Thuộc tính  href (toàn bộ) chuỗi URL hiện hành  hash dữ liệu sau dấu # của chuỗi href  host tên máy chủ và số cổng của URL  hostname tên máy chủ của URL  Phương thức  assign() tải tài liệu html mới  reload() tải lại trang hiện hành  replace() thay thế trang hiện hành bởi trang khác với URL xác định  Xem thêm Đối tượng History  Thông tin các URL gần đây  Thuộc tính  length số URL đã duyệt  Phương thức:  back() đến URL trước URL hiện tại trong danh sách các trang đã duyệt  forward() đến URL sau URL hiện tại trong danh sách các trang đã duyệt  go() đến URL xác định trong danh sách các trang đã duyệt  Xem thêm Đối tượng Document  Dùng để xử lý thông tin về tài liệu html trong cửa sổ trình duyệt  Thuộc tính  bgColor, fgColor màu nền, màu văn bản  URL url của tài liệu hiện hành  title tiêu đề tài liệu  …  Phương thức  write() ghi ra tài liệu  …  Xem thêm Đối tượng Document  Ví dụ: function khoitao() { document.bgColor = 'lightblue'; document.fgColor = 'darkblue'; } document.write(document.URL); ThS Nguyễn Minh Vi BM Tin học – ĐH An Giang Javascript XỬ LÝ SỰ KIỆN Sự kiện (Event)  Sự kiện: hành động xảy ra trên trang web, được tạo ra bởi người dùng hoặc hệ thống, vd:  người dùng click vào một button  trang web được tải xong  Đối tượng Event: cung cấp thông tin về sự kiện, vd:  kiểu sự kiện  vị trí con trỏ tại thời điểm xảy ra sự kiện Sự kiện  Một sự kiện bắt đầu bằng hành động hoặc điều kiện khởi tạo sự kiện, và kết thúc bằng việc đáp lại của trình xử lý sự kiện tương ứng.  Chu trình sống của sự kiện thông thường:  Hành động của người sử dụng hoặc một điều kiện tương ứng khi sự kiện xảy ra  Đối tượng Event được cập nhật để phản ánh trạng thái sự kiện  Phát sinh (kích hoạt) sự kiện  Trình xử lý sự kiện tương ứng được gọi  Trình xử lý sự kiện thực hiện các hành động và trả quyền điều khiển về chương trình Điều khiển sự kiện  Sử dụng trình điều khiển sự kiện như thuộc tính của thẻ <tag eventHandler="JavaScript Code">  Sử dụng trình điều khiển sự kiện như thuộc tính của đối tượng object.eventhandler = function; Các sự kiện thông thường  onClick  onChange  onFocus  onBlur  onMouseOver  onMouseOut  onMouseUp  onMouseDown  onSubmit  onLoad onClick  Sự kiện onClick xảy ra khi người dùng click chuột vào một phần tử  Thường dùng cho các loại nút nhấn, liên kết hoặc checkbox, radio onChange  Sự kiện onChange xảy ra khi nội dung của một phần tử thay đổi  Thường dùng cho ô nhập textbox, ô nhập textarea, hộp lựa chọn select onFocus, onBlur  Sự kiện onFocus xảy ra khi một phần tử nhận được tiêu điểm (trở thành phần tử hiện thời)  Sự kiện onBlur xảy ra khi một phần tử bị mất tiêu điểm onMouseOver, onMouseOut  Sự kiện onMouseOver xảy ra khi con trỏ chuột di chuyển lên trên một phần tử  Sự kiện onMouseOut xảy ra khi con trỏ chuột rời khỏi phần tử đó onMouseDown, onMouseUp  Sự kiện onMouseDown xảy ra khi có hành động nhấp (nhấn) chuột lên phần tử  Sự kiện onMouseUp xảy ra khi có hành động nhả chuột ThS Nguyễn Minh Vi BM Tin học – ĐH An Giang Javascript AJAX (Asynchronous JavaScript and XML ) Ajax  Là kỹ thuật trao đổi dữ liệu với server, cho phép cập nhật một phần nội dung trang web mà không cần phải load lại toàn bộ trang  Là sự kết hợp giữa:  Đối tượng XMLHttpRequest  Javascript/DOM  CSS  XML Ajax  Các bước thực hiện chính:  Tạo đối tượng XMLHttpRequest  Gửi yêu cầu đến server  Nhận dữ liệu trả về từ server Tạo đối tượng XMLHttpRequest  Các trình duyệt thông dụng hiện nay variable=new XMLHttpRequest();  Trình duyệt IE cũ hơn variable=new ActiveXObject ("Microsoft.XMLHTTP");  Ví dụ var xmlhttp; if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else{ // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } Gửi yêu cầu đến server  Dùng các phương thức của đối tượng XMLHttpRequest  open(method, url, async) • method: GET/POST • url: đường dẫn file trên server • async: true/false (không đồng bộ / đồng bộ)  send(string) • string: chuỗi tham số nếu dùng phương thức POST, null nếu dùng phương thức GET Gửi yêu cầu đến server  Ví dụ // Phương thức GET xmlhttp.open('GET', 'tên_file',true); xmlhttp.send(); // Phương thức POST xmlhttp.open('POST', 'tên_file',true); xmlhttp.send(); // Nếu dữ liệu gửi từ form bằng phương thức POST xmlhttp.open('POST', 'tên_file',true); xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlhttp.send('tham_số=giá_trị&...'); Dữ liệu trả về  Dùng các thuộc tính của đối tượng XMLHttpRequest  responseText: dữ liệu trả về dạng text  responseXML: dữ liệu trả về theo định dạng xml document.getElementById('id').innerHTML=xmlhttp.responseText; xmlDoc=xmlhttp.responseXML; txt=''; x=xmlDoc.getElementsByTagName('tag_name'); for (i=0;i<x.length;i++) { txt=txt + x[i].childNodes[0].nodeValue + ''; } document.getElementById('id').innerHTML=txt; Sự kiện onreadystatechange  Nếu tham số async là true (không đồng bộ), cần chỉ định hàm cần thực thi trong sự kiện onreadystatechange Thuộc tính Mô tả onreadystatechange Chứa một hàm (hoặc tên một hàm) sẽ được gọi tự động mỗi khi thuộc tính readyState thay đổi. readyState Trạng thái của XMLHttpRequest. Có các giá trị từ 0 đến 4: 0: yêu cầu (request) chưa được khởi tạo 1: kết nối (với server) được thiết lập 2: yêu cầu đã được gửi 3: yêu cầu đang được xử lý 4: yêu cầu đã hoàn tất và response sẵn sàng status 200: "OK" 404: Page not found Sự kiện onreadystatechange  Ví dụ xmlhttp.open('GET', 'tên_file',true); xmlhttp.send(); xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ document.getElementById('id_thẻ').innerHTML= xmlhttp.responseText; } }
Tài liệu liên quan