Tìm hiểu về JavaScript

Giới thiệu ngôn ngữ Script  Nhập môn JavaScript  Cú pháp và quy ước  Biến, dữ liệu và các lệnh  Hàm, lớp ñối tượng, sự kiện  Các ñối tượng thông dụng

pdf30 trang | Chia sẻ: tranhoai21 | Lượt xem: 1580 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Tìm hiểu về JavaScript, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1Thiết kế web Khoa CNTT-LHU 1 Chương VI: JavaScript Giới thiệu ngôn ngữ Script Nhập môn JavaScript Cú pháp và quy ước Biến, dữ liệu và các lệnh Hàm, lớp ñối tượng, sự kiện Các ñối tượng thông dụng Thiết kế web Khoa CNTT-LHU 2 Giới thiệu ngôn ngữ Script  Là ngôn ngữ dạng thông dịch  Cho phép Web tương tác với người dùng  Các ngôn ngữ script thông dụng – Javascript (Netscape) – Jscript (Microsoft) – VBScript (Microsoft) – PHP, CGI, 2Thiết kế web Khoa CNTT-LHU 3 Ứng dụng Script  Client-Side – Thực hiện tại Browser (IE, Firefox, Nescape Navigator, Safari, ...) – Thực hiện các tương tác với người dùng, thay ñổi cấu trúc trang web, kiểm tra dữ liệu ñược nhập vào của người dùng, )  Server-Side – Thực hiện tại WebServer (IIS, Apache, Netscape Enterprise Server, .) – Script tại Server-Side cho phép kết nối CSDL, chia sẽ thông tin giữa các người duyệt web, truy cập hệ thống file trên server, Thiết kế web Khoa CNTT-LHU 4 JavaScript Web ñộng -> Netscape -> Script Language: LiveScript => JavaScript  JavaScript là ngôn ngữ dưới dạng script có thể gắn với các file HTML và dùng thông dịch (interpreter)  JavaScript là ngôn ngữ dựa trên ñối tượng: math, document, windows,  JavaScript không phải là ngôn ngữ hướng ñối tượng như C++, Java,  Thiết kế ñộc lập với hệ ñiều hành 3Thiết kế web Khoa CNTT-LHU 5 Nhập môn JavaScript (1)  Nhúng JavaScript vào file HTML : – Sử dụng các câu lệnh và các hàm trong cặp thẻ ... – Sử dụng các file nguồn JavaScript – Sử dụng một biểu thức JavaScript làm giá trị của một thuộc tính HTML – Sử dụng thẻ sự kiện (event handlers) trong một thẻ HTML nào ñó?  ðặt giữa tag và : ñoạn script sẽ thực thi ngay khi trang web ñược mở.  ðặt giữa tag và : ðoạn script trong phần body ñược thực thi khi trang web ñang mở (sau khi thực thi các ñoạn script có trong phần ).  Số lượng ñoạn script không hạn chế. Thiết kế web Khoa CNTT-LHU 6 Nhập môn JavaScript (2)  Sö dông thÎ ... Èn c¸c Script ®èi víi c¸c webbrowser kh«ng support script // INSERT ALL JavaScript HERE <!-- From here the JavaScript code hidden // INSERT ALL JavaScript HERE // This is where the hidden ends --> Ghi chó trong JavaScript gièng trong C++ 4Thiết kế web Khoa CNTT-LHU 7 Nhập môn JavaScript (3)  VÝ dô trang web ®Çu tiªn víi JavaScript New Page 1 document.write("Xin chao ban"); Thiết kế web Khoa CNTT-LHU 8 Nhập môn JavaScript (4)  Sö dông c¸c file nguån JavaScript  Có ph¸p: .... Trong file “general.js” // JavaScript Document function sayhello() { alert('Hello, Chao cac ban lop 04CT1 \nChuc cac ban mot ngay vui ve!'); } Trong file “6_1.htm” <script language="javascript“ src="general.js"> <img src="images/TPHCM17.jpg" border="0" alt="TPHCM"> 5Thiết kế web Khoa CNTT-LHU 9 Nhập môn JavaScript (5)  ThÎ Trang nµy kh«ng sö dông JavaScript. Do ®ã b¹n cÇn sö dông browser Netscape Navigator tõ version 2.0 trë ®i! H·y kÝch chuét vµo ®©y ®Ó load vÒ Netscape míi h¬n NÕu b¹n ®· sö dông Netscape tõ 2.0 trë ®i mµ vÉn ®äc ®−îc dßng nµy h·y bËt Preferences/Advanced/JavaScript lªn Thiết kế web Khoa CNTT-LHU 10 Nhập môn JavaScript (6)  C¸ch dïng ®èi t−îng: –Gäi mét ph−¬ng thøc: ObjectName.MethodName()  HiÓn thÞ mét dßng text dïng ®èi t−îng document –write() vµ writeln() Ouputting Text This text is plain. <!-- HIDE FROM OTHER BROWSERS document.write(“This text is bold."); // STOP HIDING FROM OTHER BROWSERS --> 6Thiết kế web Khoa CNTT-LHU 11 Nhập môn JavaScript (7)  Giao tiÕp víi ng−êi sö dông var name=window.prompt("Hello! What’s your name ?","Lung"); document.write("Hello " + name + " ! I hope you like JavaScript "); Thiết kế web Khoa CNTT-LHU 12 Nhập môn JavaScript (8)  Giao tiÕp víi ng−êi sö dông ðiền tên của bạn vào ñây ñể kiểm tra: function kiemtra(form) { alert("ban da bam nut kiem tra"); document.write("Tên bạn là " + form.UserName.value + ""); } 7Thiết kế web Khoa CNTT-LHU 13 Cú pháp và quy ước  Javascript phân biệt chữ hoa – chữ thường – Ví dụ : Hai biến Java, java là khác nhau  Tất cả các câu lệnh javascript ñều cách nhau bởi dấu “;”  Không phân biệt khoảng trắng, Tab, xuống dòng trong câu lệnh.  Chuổi trong javascript ñược ñặt trong cặp nháy ñơn (‘ ’) hoặc nháy kép (“ ”) – Ví dụ : Thiết kế web Khoa CNTT-LHU 14 Cú pháp và quy ước - Special Characters  Special Characters “\” – \n New line - \r Carriage return – \t Tab - \b : Backspace VD: "one line \n another line"  Escaping Characters – \’ : Dấu nháy ñơn - \” : Dấu nháy kép VD: – var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service." document.write(quote) – var home = "c:\\temp" 8Thiết kế web Khoa CNTT-LHU 15 Cú pháp và quy ước  Các loại dấu ngoặc: – { } : ðánh dấu khối lệnh – [ ] : Sử dụng trong cấu trúc Mảng – ( ) : Sử dụng trong hàm, thuộc tính ñối tượng  Tên biến và hàm: – Bắt ñầu bằng Ký tự (A..Z, a..z), _, $ – Không ñược bắt dầu bằng ký số (0..9) – Không có khoảng trắng giữa tên (biến hoặc hàm) – Không ñược ñặt tên trùng từ khóa  VD: – X1, _bien10, $sotien – 0_bien1, bien 2, do, : sai Thiết kế web Khoa CNTT-LHU 16 Danh sách từ khóa 9Thiết kế web Khoa CNTT-LHU 17 BiÕn trong JavaScript (1)  BiÕn vµ ph©n lo¹i biÕn –BiÕn toµn côc –BiÕn côc bé KiÓu d÷ liÖu: ng«n ng÷ cã tÝnh ®Þnh kiÓu thÊp var fruit='apples'; numfruit=12; // không ñịnh nghĩa var numfruit = numfruit + 20 + " " + fruit; var temp ="There are " + numfruit ; document.write(temp); var ten; // gán giá trị cho biến ten = “tôi là 04ct”; // viết giá trị của biến ra IE document.write(ten); // gán giá trị cho biến ten = 1000; // viết giá trị của biến ra IE document.write(ten); Thiết kế web Khoa CNTT-LHU 18 BiÕn trong JavaScript (2) KiÓu d÷ liÖu: – kiÓu sè nguyªn: • HÖ c¬ sè 10: b¾t ®Çu b»ng sè # 0: 5356 • HÖ c¬ sè 8: b¾t ®Çu b»ng sè 0: 0453 • HÖ c¬ sè 16: b¾t ®Çu b»ng 0x: 0xF12 – kiÓu dÊu phÈy ®éng: • 9.87 • -0.85E4 • 9.87E14 • .98E-3 – kiÓu logic: true hoÆc false – kiÓu chuçi: “day la mot chuoi” hoac ‘day cung la mot string’ 10 Thiết kế web Khoa CNTT-LHU 19 Các kiểu dữ liệu Thiết kế web Khoa CNTT-LHU 20 Biểu thức trong JavaScript  C¸c biÓu thøc trong JavaScript gÇn gièng víi C++  VÝ dô c¸c biÓu thøc trong JavaScript: a. 7 + 5 b. "7" + "5" c. 7 == 7 d. 7 >= 5 e. 7 <= 7 f. (7 < 5) ? 7 : 5 g. (7 >= 5) && (5 > 5) h. (7 >= 5) || (5 > 5) 11 Thiết kế web Khoa CNTT-LHU 21 Data Type Conversion var answer = 42 Sau ñó có thể gán: answer = "Thanks for all the fish...“  x = "The answer is " + 42 // returns "The answer is 42" y = 42 + " is the answer" // returns "42 is the answer"  "37" - 7 // returns 30 "37" + 7 // returns 377  unassigned variables function f1() { return y - 2; } f1() //Causes runtime error function f2() { return var y - 2; } f2() //returns NaN Thiết kế web Khoa CNTT-LHU 22 Các lệnh trong JavaScript (1)  Bitwise Operators a >>> b Zero-fill right shift a >> b Sign-propagating right shift a << b Left shift ~ a Bitwise NOT a ^ b Bitwise XOR a | b Bitwise OR a & b Bitwise AND Usage Operator 15 & 9 (1111 & 1001 = 1001) 15 | 9 (1111 | 1001 = 1111) 15 ^ 9 (1111 ^ 1001 = 0110) 12 Thiết kế web Khoa CNTT-LHU 23 C¸c lÖnh trong JavaScript (2)  Logical Operators  conditional operator – condition ? val1 : val2 status = (age >= 18) ? "adult" : "minor“  typeof 1. typeof operand 2. typeof (operand) !expr ! expr1 || expr2 || expr1 && expr2 && Usage Operator Thiết kế web Khoa CNTT-LHU 24 C¸c lÖnh trong JavaScript (3)  C¸c lÖnh ®iÒu kiÖn, vßng lÆp – if ... Else – for loop – while loop – Break, continue  C¸c c©u lÖnh thao t¸c trªn ®èi t−îng – for ( in ) document.write("The properties of the Window object are: "); for (var x in window) document.write(" "+ x + ", "); switch (expression){ case label : statement; break; default : statement;} 13 Thiết kế web Khoa CNTT-LHU 25 C¸c lÖnh trong JavaScript (4)  new Có ph¸p objectvar = new object_type ( param1 [,param2]... [,paramN])  With with (object) { // statement } with (document){ write(“This is an example of the things that can be done ”); write(“With the with statment. ”); write(“This can really save some typing”); } Thiết kế web Khoa CNTT-LHU 26 C¸c lÖnh trong JavaScript (5)  VÝ dô phÐp to¸n new: function Nguoi(first_name, last_name, age, gt) { this.first_name=first_name; this.last_name=last_name; this.age=age; this.gt=gt; } Nguoi1= new Nguoi("Thuy", "Dau Bich", "20", "Female"); Nguoi2= new Nguoi("Nang", "Nguyen Duc", "22", "Male"); document.write ("1. "+Nguoi1.last_name+" " + Nguoi1.first_name + "" ); document.write("2. "+Nguoi2.last_name +" "+ Nguoi2.first_name + ""); 14 Thiết kế web Khoa CNTT-LHU 27 C¸c lÖnh trong JavaScript (6)  C¸c hµm cã s½n – eval: retvar=eval (bÊt kú biÓu thøc hîp lÖ trong Java) var string=”10+ Math.sqrt(64)”; document.write(string+ “=”+ eval(string)); – parseInt(string, c¬ sè) – parseFloat(string) var x1="12"; var x3; x3=parseInt(x1,4); //x3=? x3=parseInt(x1,6); // x3=? Thiết kế web Khoa CNTT-LHU 28 C¸c lÖnh trong JavaScript (7) M¶ng (Array) – myArray = new InitArray (10) • myArray[1] = "NghÖ An" • myArray[2] = "Lµo" function InitArray(numElements) { this.length = numElements; for (var x=1; x<=numElements; x++) { this[x]=0 } return this; } 15 Thiết kế web Khoa CNTT-LHU 29 Javascript - Hàm  Cú pháp khai báo: function Tên_hàm(thamso1, thamso2,..) { // Nội dung hàm }  Hàm trả về giá trị: function Tên_hàm(thamso1, thamso2,..) { // Nội dung hàm return (value); } Thiết kế web Khoa CNTT-LHU 30 Ví dụ hàm  ðịnh nghĩa hàm: function Sum(x, y) { tong = x + y; return tong; }  Gọi hàm: var x = Sum(30, 40); 16 Thiết kế web Khoa CNTT-LHU 31 Lớp ñối tượng  Khai Khai báo lớp: function Tên_lớp() { //Khai Khai báo biến thành viên this.bien1 = value1; this.bien2 = value2; }  ðịnh nghĩa hàm thành viên của lớp: Tên_Lớp.prototype.Tên_phươngthức = function() { //return value; } Thiết kế web Khoa CNTT-LHU 32 Ví dụ lớp 17 Thiết kế web Khoa CNTT-LHU 33 Kế thừa lớp ñối tượng Thiết kế web Khoa CNTT-LHU 34 Kế thừa lớp ñối tượng 18 Thiết kế web Khoa CNTT-LHU 35 Sù kiÖn - Event (1)  Event handler : – – function kiemtra() { alert("ban da bam nut kiem tra"); } Ðiền tên của bạn vào ñây: Thiết kế web Khoa CNTT-LHU 36 Sù kiÖn - Event (2)  C¸c sù kiÖn th−êng x¶y ra: khi ng−êi dïng ®ãng mét trangonUnLoad khi ng−êi dïng ®−a ra mét form.onSubmit khi ng−êi sö dông lùa chän mét tr−êng nhËp dữ liÖu trªn form. onSelect khi di chuyÓn chuét qua kÕt nèi hay anchor.onMouseOver trang Web ®−îc load.onLoad khi thµnh phÇn cña form ®−îc focus(lµm næi lªn).onFocus khi gi¸ trÞ cña thµnh phÇn ®−îc chän thay ®æionChange khi ng−êi dïng kÝch vµo c¸c thµnh phÇn hay liªn kÕt cña form. onClick input focus bÞ xo¸ tõ thµnh phÇn formonBlur 19 Thiết kế web Khoa CNTT-LHU 37 C¸c ®èi t−îng trong JavaScript  String  Number  Array  Date Math  navigator  window  Document.  location  History Thiết kế web Khoa CNTT-LHU 38 ðối tượng String  Thuộc tính: – length : chiều dài của chuỗi – constructor : Dùng ñể kiểm tra kiểu của biến – prototype : Bổ sung prototype hàm cho một ñối tượng – Nối kết các chuỗi bằng toán tử “+” var sTenBien = new String(); sTenBien = 256; if(sTenBien.constructor == String) { document.writeln("sTenBien la mot chuoi co chieu dai la:" + sTenBien.length); } else { document.writeln("sTenBien la mot so co gia tri la: " + sTenBien); } 20 Thiết kế web Khoa CNTT-LHU 39 ðối tượng String s1 = "foo" //creates a string literal value s2 = new String("foo") //creates a String object  Sự khác biệt: s1 = "2 + 2" //creates a string literal value s2 = new String("2 + 2")//creates a String object eval(s1) //returns the number 4 eval(s2) //returns the string "2 + 2"  Phương thức – stringObj.anchor(anchorString) – tạo Bookmark – strVariable.link(URL) – string1.concat([string2[, string3[,... [, stringn]]]]) – toLowerCase, toUpperCase var txt="Hello world!“ document.write(txt.length) document.write(txt.toUpperCase()) Thiết kế web Khoa CNTT-LHU 40 ðối tượng String – Các phương thức 21 Thiết kế web Khoa CNTT-LHU 41 Ví dụ các phương thức trong String Thiết kế web Khoa CNTT-LHU 42 Ví dụ các phương thức trong String 22 Thiết kế web Khoa CNTT-LHU 43 Javascript – Number  Kiểu dữ liệu số nguyên, số thực  Bắt ñầu bằng ký số “0” : Số nguyên hệ bát phân  Bắt ñầu bằng “0x” : Số nguyên hệ thập lục phân VD : Cho biết giá trị thập phân tương ứng của các number sau : – 125 = ? – 010 = ? 014 = ? 028 = ? – 0xFF = ? 0x3.12 = ? Thiết kế web Khoa CNTT-LHU 44 Number – Phương thức  toExponential numObj.toExponential([fractionDigits])  toFixed numObj.toFixed([fractionDigits])  toPrecision numObj.toPrecision ([precision])  toString objectname.toString([radix]) radix : [2; 8; 10; 16] – Ví dụ: dùng các hàm với số 123.4267782 23 Thiết kế web Khoa CNTT-LHU 45 ðối tượng array  arrayObjectName = new Array(element0, element1, ..., elementN) arrayObjectName = new Array(arrayLength)  emp[0] = "Ryan Dias" emp[1] = "Graham Browne" emp[2] = "David Greene“ myArray = new Array("Hello", myVar, 3.14159)  Two-Dimensional Arrays a = new Array(4) for (i=0; i < 4; i++) { a[i] = new Array(4) for (j=0; j < 4; j++) { a[i][j] = "["+i+","+j+"]" } } Thiết kế web Khoa CNTT-LHU 46 Một số phương thức mảng  Join –Ghép các phần tử thành 1 chuỗi.  Pop – Lấy phần tử cuối  Push – Thêm 1 (hoặc nhiều phần tử) vào cuối mảng  Reverse - ðổi phần tử ñầu – cuối  Shift – Xóa phần tử ñầu khỏi mảng  Sort – Sắp xếp các phần tử trong mảng  Concat – nối mảng  toString – chuyển mảng sang dạng String 24 Thiết kế web Khoa CNTT-LHU 47 Ví dụ mảng Thiết kế web Khoa CNTT-LHU 48 Mảng ña chiều  Ví dụ về mảng 2 chiều MyArray = new Array(5,5); MyArray[0, 0] = "Ryan Dias"; MyArray[0, 1] = 1; MyArray[1, 0] = "Mike Donne"; MyArray[1, 1] = 2; document.write ("The name is " + MyArray[3, 0]); document.write(" and the code is " + MyArray[3, 1]);  JavaScript hỗ trợ ñến 60 chiều 25 Thiết kế web Khoa CNTT-LHU 49 ðối tượng Date dateObjectName = new Date([parameters])  Các constructor – var dateObj = new Date() – var dateObj = new Date(dateVal) – var dateObj = new Date(year, month, date[,hours[,minutes[,seconds[,ms]]]]) – var dateObj = new Date(dateString) Ví dụ: var my_date=new Date("October 12, 1988 13:14:00") var my_date=new Date("October 12, 1988") var my_date=new Date(88,09,12,13,14,00) var my_date=new Date(88,09,12) today = new Date(). Thiết kế web Khoa CNTT-LHU 50 Các phương thức của Date  getDate(), getDay(), getMonth(), getYear(),  getTime(), getHours(), getMinutes(), getSeconds()  setDate, setFullYear, setHours, setMinutes, setMonth, setSeconds, setTime, setYear,  toDateString, toString  Tham khảo trang web pt/diaries/15/2.html 26 Thiết kế web Khoa CNTT-LHU 51 ðối tượng Math  Sử dụng ñối tượng Math cho các hàm toán học Math.abs(number) Math.cos(number), Math.acos(number) Math.tan(number), Math.atan(number) Math.ceil(number) Math.floor(number) Math.max([number1[, number2[. . . [, numberN]]]]) Math.random( ) Math.round(number ) Math.sqrt(number ) , Thiết kế web Khoa CNTT-LHU 52 Window object  Tồn tại khi mở 1 tài liệu HTML  Sử dụng ñể truy cập thông tin window  ðiều khiển các sự kiện xảy ra trong window  Nếu tài liệu ñịnh nghĩa nhiều frame, browser tạo 1 window object cha và các window object con cho từng frame 27 Thiết kế web Khoa CNTT-LHU 53 Window methods  alert() – window.alert("How are you doing?");  prompt() – window.prompt("Please provide your name","optional text");  confirm() – window.confirm("Are you sure you want to do this?");  blur() - Move This Window to Back  focus() - Bring Main Window to Front  open() – window.open("URL", "window name", "attributes"); – newWin=window.open("","","width=300,height=250"); Thiết kế web Khoa CNTT-LHU 54 Window methods moveBy(): di chuyển cả window ñi – window.moveBy(xDistance,yDistance); <input type="Button" value="Move Window" onclick="window.moveBy(50,50);"> moveTo(): Di chuyển ñến vị trí so với góc màn hình (0,0) – window.moveTo(xDistance,yDistance);  resizeBy() – window.resizeBy(xSize,ySize);  resizeTo() – window.resizeTo(xWidth,yLength); 28 Thiết kế web Khoa CNTT-LHU 55 Window Object Event Handlers <body onLoad="alert('This page has finished loading!)" window.onload=functionName; <body onUnload="alert('You're leaving so soon?)"  onResize  onError  onBlur  onFocus C¸c ch−¬ng tr×nh xö lý sù kiÖn onLoad - XuÊt hiÖn khi cöa sæ kÕt thóc viÖc t¶i. onUnLoad - XuÊt hiÖn khi cöa sæ ®−îc lo¹i bá. Thiết kế web Khoa CNTT-LHU 56 Document object  Document Object biểu diễn cho tài liệu HTML  Dùng ñể lấy thông tin về tài liệu, các thành phần HTML và xử lý sự kiện  Properties – aLinkColor – bgColor – Body – fgColor – linkColor – Location – Title – URL – vlinkColor Methods – clear – close – open – write – writeln 29 Thiết kế web Khoa CNTT-LHU 57 History Object  History Object cung cấp danh sách các URL ñã ñược duyệt bởi người dùng Methods – Back – Forward – go  History.go(-1) -- history.back()  History.go(+1) – history.forward() Thiết kế web Khoa CNTT-LHU 58 Location Object  Chứa thông tin về URL hiện tại  Properties – Hostname – href, Methods – Reload – 30 Thiết kế web Khoa CNTT-LHU 59 HTML Objects  Mỗi form trong 1 document sẽ tạo ra 1 ñối tượng form  1 document có thể có nhiều form, ñược lưu trong 1 forms array (bắt ñầu từ form[0])  Truy cập ñến form – document.forms[0] – document.formName  Truy cập ñến các thành phần của form – document.forms[0].item[0].value – document.formName.InputName.value Thiết kế web Khoa CNTT-LHU 60