Bài 5: Mô hình DOM và CSS

Hệ thống bài cũ

Mô hình lập trình Mô hình lập trình Mô hình lập trình hướng đối tượng Mô hình lập trình hướng đối tượng Thuộc tính, phương thức và lớp Thuộc tính, phương thức và lớp Tạo đối tượng Tạo đối tượng Thêm thuộc tính và phương thức vào đối tượng Thêm thuộc tính và phương thức vào đối tượng Tạo lớp, tạo đối tượng từ lớp Tạo lớp, tạo đối tượng từ lớp Các thao tác với đối tượng trong lớp Các thao tác với đối tượng trong lớp Browser Object Model Browser Object Model

Mô hình DOM và CSS

2

Mục tiêu bài học

Giới thiệu về mô hình Document Object Model Giới thiệu về mô hình Document Object Model Giới thiệu về HTML DOM Giới thiệu về HTML DOM Cấu trúc DOM Cấu trúc DOM Thuộc tính của node Thuộc tính của node Phương thức của node Phương thức của node Truy cập đến node Truy cập đến node Thêm node Thêm node Xóa node Xóa node

Truy cập và thay đổi style của các element Truy cập và thay đổi style của các element Đối phó với các trình duyệt khác nhau Đối phó với các trình duyệt khác nhau

Mô hình DOM và CSS

3

Document Object Model

DOM là một chuẩn được định nghĩa bởi W3C (World Wide DOM là một chuẩn được định nghĩa bởi W3C (World Wide Web Consortium) để có thể truy cập và thao tác với các tài Web Consortium) để có thể truy cập và thao tác với các tài liệu như html hay xml bằng các ngôn ngữ lập trình như liệu như html hay xml bằng các ngôn ngữ lập trình như Javascript, VB… Javascript, VB…

that will

The Document Object Model is a platform- and language-neutral allow interface programs and scripts to dynamically access and update the content, structure and style of documents (Định nghĩa bởi W3C)

Mô hình DOM và CSS

4

DOM

DOM được chia thành 3 mức

Mô hình DOM và CSS

5

Core DOM: Tiêu chuẩn cho bất kỳ tài liệu có cấu trúc nào XML DOM: Tiêu chuẩn cho tài liệu XML HTML DOM: Tiêu chuẩn cho tài liệu HTML

HTML DOM

HTML DOM định nghĩa các đối tượng và thuộc tính của tất HTML DOM định nghĩa các đối tượng và thuộc tính của tất cả các thành phần HTML, và phương thức để truy cập đến cả các thành phần HTML, và phương thức để truy cập đến chúng chúng Hay: HTML DOM là chuẩn để lấy, thay đổi, thêm, xóa Hay: HTML DOM là chuẩn để lấy, thay đổi, thêm, xóa các thành phần HTML các thành phần HTML

Truy cập trang web http://www.w3schools.com/htmldom/default.asp/ để tìm hiểu thêm về HTML DOM

Mô hình DOM và CSS

6

Node trong DOM

Tất cả các thành phần trong tài liệu HTML đều được biểu diễn Tất cả các thành phần trong tài liệu HTML đều được biểu diễn bằng đối tượng node bằng đối tượng node

Mô hình DOM và CSS

7

Toàn bộ tài liệu là document node Toàn bộ tài liệu là document node Tất cả các thành phần của HTML đều là element node Tất cả các thành phần của HTML đều là element node Văn bản trong thành phần HTML là text node Văn bản trong thành phần HTML là text node Tất cả các thuộc tính là attribute node Tất cả các thuộc tính là attribute node Chú thích là comment node Chú thích là comment node

Tài liệu HTML ví dụ

Hi Hi

Hello

Hello

Link Link

Node gốc là có hai node con là và có một node con là <body> chứa hai node con là <p> và <a></p> <p>Mô hình DOM và CSS</p> <p>8</p> <p></html> </html></p> <h3>Cấu trúc hình cây DOM</h3> <p>DOM trình bày tài liệu HTML theo cấu trúc hình cây DOM trình bày tài liệu HTML theo cấu trúc hình cây</p> <p><html > <html ></p> <p><head> <head></p> <p><title>Hi Hi

Root Element: Root Element:

Hello

Hello

Link Link

Element: Element:

Element: Element:

Element: Element: <title></h4> <h4>Element: Element: <p> <p></h4> <h4>Element: Element: <a> <a></h4> <p>Text: “Hi” Text: “Hi”</p> <p>Text: Text: “Hello” “Hello”</p> <h4>Attribute: Attribute: “href” “href”</h4> <p>Text: Text: “Link” “Link”</p> <p>Mô hình DOM và CSS</p> <p>9</p> <h3>Quan hệ giữa các node</h3> <h4>Giữa các node có mối quan hệ cha, con (parent, children) và Giữa các node có mối quan hệ cha, con (parent, children) và anh em (siplings) anh em (siplings)</h4> <p>Node cha có các node con, các node con cùng cấp bậc gọi là Node cha có các node con, các node con cùng cấp bậc gọi là anh em anh em</p> <h4>Trên cây, node đầu tiên được gọi là root (gốc) Trên cây, node đầu tiên được gọi là root (gốc) Tất cả các node, ngoại trừ root chỉ có một node cha Tất cả các node, ngoại trừ root chỉ có một node cha Một node có thể có nhiều node con hoặc không có node Một node có thể có nhiều node con hoặc không có node con nào con nào Node lá (leaf) là node không có node con Node lá (leaf) là node không có node con Những node anh em (siplings) với nhau là node có cùng một Những node anh em (siplings) với nhau là node có cùng một node cha node cha</h4> <p>Mô hình DOM và CSS</p> <p>10</p> <h3>Quan hệ giữa các node</h3> <p><html> không có node cha, <html> là node gốc <html> không có node cha, <html> là node gốc <html> có hai node con là <head> và <body>, <head> và <html> có hai node con là <head> và <body>, <head> và <body> là anh em <body> là anh em <head> có một node con là <title> <head> có một node con là <title> <title> có một node con là text node “hi” <title> có một node con là text node “hi” <body> chứa hai node con là <p> và <a>, <p> và <a> là anh <body> chứa hai node con là <p> và <a>, <p> và <a> là anh em em</p> <p>Node cha của node <head> và <body> là node <html> Node cha của node <head> và <body> là node <html> Node cha của text node “Hello” là node <p> Node cha của text node “Hello” là node <p></p> <p>Mô hình DOM và CSS</p> <p>11</p> <p>Text node “Hi”, “Hello” , “Link” và attribute node “href” đều là Text node “Hi”, “Hello” , “Link” và attribute node “href” đều là node lá node lá</p> <h3>Con cả, con út</h3> <p>parentNode</p> <p><head> và <body> là anh em, trong đó <head> là con cả của <html> còn <body> là con út của <html> <p> và <a> là anh em, trong đó <p> là con cả của <body> còn <a> là con út của <body></p> <h4>Root Element: <html></h4> <h4>Element: <head></h4> <p>firstChild</p> <p>g n</p> <p>i l</p> <p>i</p> <p>g n</p> <p>i l</p> <p>Là các con của <html> và anh em với nhau</p> <p>i</p> <p>i</p> <p>p S t x e n</p> <p>p S s u o v e r p</p> <p>lastChild</p> <h4>Element: <body></h4> <p>Mô hình DOM và CSS</p> <p>12</p> <h3>Thuộc tính và phương thức của node</h3> <h4>DOM định nghĩa các thuộc tính và các phương thức cho DOM định nghĩa các thuộc tính và các phương thức cho các node để hỗ trợ cho việc lập trình các node để hỗ trợ cho việc lập trình Thuộc tính định nghĩa các đặc tính cho node Thuộc tính định nghĩa các đặc tính cho node Phương thức để thực hiện các thao tác với node Phương thức để thực hiện các thao tác với node</h4> <p>Mô hình DOM và CSS</p> <p>13</p> <p>Truy cập đến node Truy cập đến node Thêm node con cho node Thêm node con cho node Xóa node con Xóa node con</p> <h3>Các thuộc tính của node</h3> <p>Giải thích</p> <p>Thuộc tính x là đối tượng node x.innerHTML</p> <p>x.nodeName</p> <p>x.nodeValue</p> <p>x.nodeType x.nodeType</p> <p>x.parentNode</p> <p>x.childNodes</p> <p>x.attributes Giá trị văn bản của x Tên của x Giá trị của x Kiểu của Node Kiểu của Node Node cha của x Các node con của x Các node thuộc tính của x</p> <p>Mô hình DOM và CSS</p> <p>14</p> <p>Đọc thêm http://www.w3schools.com/htmldom/dom_nodes_info.asp để tra tra cứu thêm về các node</p> <h3>Demo truy cập thuộc tính của Node</h3> <p><body> <body></p> <p><div id = "dHoa"> <div id = "dHoa"></p> <p><p>Hoa Hong</p> <p>Hoa Hong</p> <p>Hoa Lan</p> <p>Hoa Lan</p></p> <p></div> </div> <script type ="text/javascript"> <script type ="text/javascript"></p> <p>var pHoa = document.getElementById("dHoa") var pHoa = document.getElementById("dHoa") document.write("Ten node: " + pHoa.nodeName + "</br>"); document.write("Ten node: " + pHoa.nodeName + "</br>"); document.write("Gia tri của node: " + pHoa.nodeValue + "</br>"); document.write("Gia tri của node: " + pHoa.nodeValue + "</br>"); document.write("Node cha: " + pHoa.parentNode.nodeName + "</br>"); document.write("Node cha: " + pHoa.parentNode.nodeName + "</br>"); document.write("Node con dau tien: " + pHoa.firstChild.innerText + "</br>"); document.write("Node con dau tien: " + pHoa.firstChild.innerText + "</br>"); document.write("Node con thu hai: " + document.write("Node con thu hai: " +</p> <p>pHoa.childNodes[1].childNodes[0].nodeValue + "</br>"); pHoa.childNodes[1].childNodes[0].nodeValue + "</br>");</p> <p>pHoa.childNodes[1].innerText = "Hoa phuong vi"; pHoa.childNodes[1].innerText = "Hoa phuong vi";</p> <p>Có thể xem hoặc thiết lập giá trị cho các thuộc tính bằng cách truy cập đến thuộc tính</p> <h4>Thay đổi nội dung trong thẻ <p></h4> <p></script> </script></p> <p>Xem Demo Truy cap cac thuoc tinh của node</p> <p></body> </body></p> <p>Mô hình DOM và CSS</p> <p>15</p> <h3>Giá trị thuộc tính quan trọng</h3> <h4>Thuộc tính nodeName</h4> <h4>Của node element</h4> <p>attribute</p> <p>text</p> <h4>Có giá trị là Tên thẻ HTML tương ứng Tên thuộc tính #text</h4> <p>document</p> <p>#document</p> <p>nodeValue</p> <p>element</p> <p>null</p> <p>attribute attribute</p> <p>text</p> <p>nodeType</p> <p>element</p> <p>giá trị của thuộc tính giá trị của thuộc tính văn bản 1</p> <p>attribute</p> <p>2</p> <p>text</p> <p>3</p> <p>comment</p> <p>8</p> <p>document</p> <p>9</p> <p>Mô hình DOM và CSS</p> <p>16</p> <h3>Demo về thuộc tính innerHTML</h3> <p><head> <head></p> <p><script type="text/javascript"> <script type="text/javascript"></p> <p>function hienThi() { function hienThi() {</p> <p>var node = document.getElementById("anhDiv"); var node = document.getElementById("anhDiv"); node.innerHTML = "<img src='mu.jpg'>"; node.innerHTML = "<img src='mu.jpg'>";</p> <p>} }</p> <p></script> </script></p> <p></head> </head> <body> <body> Nhấn vào đây để hiển thị ảnh: Nhấn vào đây để hiển thị ảnh: <div id="anhDiv"></div> <div id="anhDiv"></div> <input type="button" value="Hiển thị ảnh" onclick="hienThi()"/> <input type="button" value="Hiển thị ảnh" onclick="hienThi()"/> </body> </body> </html> </html></p> <p>Mô hình DOM và CSS</p> <p>17</p> <h3>Demo về thuộc tính innerHTML</h3> <h4>Xem Demo/InnerHTML</h4> <p>Mô hình DOM và CSS</p> <p>18</p> <h3>Các phương thức của node</h3> <p>Giải thích</p> <p>Thuộc tính x là đối tượng node x.getElementById(id)</p> <p>Trả về thành phần có id xác định Trả về tất cả các thành phần với tên thẻ xác định Trả về tất cả các thành phần với tên thẻ xác định</p> <p>x.getElementsByTagName x.getElementsByTagName (name) (name)</p> <p>x.appendChild(node)</p> <p>Mô hình DOM và CSS</p> <p>19</p> <p>x.removeChild(node) Thêm node con vào node x Xóa node con của node x</p> <h3>Truy cập đến các node</h3> <p>Có thể truy cập đến các node bằng 3 cách sau: Sử dụng phương thức getElementById(id) Sử dụng phương thức getElementsByName(name) Sử dụng phương thức getElementsByTagName(name) Sử dụng mối quan hệ giữa các node để điều hướng</p> <p>Mô hình DOM và CSS</p> <p>20</p> <h3>Demo sử dụng getElementById(id)</h3> <p><html > <html ></p> <p><head> <head></p> <p><title>Hi Hi

Hello

Hello

Link Link

Mô hình DOM và CSS

21

Demo sử dụng getElementById(id)

Giả sử đoạn mã được viết lại như sau Giả sử đoạn mã được viết lại như sau

Hi Hi

Hello

Hello

Link Link

Tại sao không hiển thị hộp thoại???? Tại sao không hiển thị hộp thoại????

Mô hình DOM và CSS

22

Demo sử dụng getElementById(id)

Mô hình DOM và CSS

23

Trả lời: Tại vì Browser làm việc theo cơ chế thông dịch. Trả lời: Tại vì Browser làm việc theo cơ chế thông dịch. Tức là dịch từng dòng một, khi đến lệnh JavaScript Tức là dịch từng dòng một, khi đến lệnh JavaScript document.getElementById("link") thì chưa có Id nào tên là document.getElementById("link") thì chưa có Id nào tên là “Link” nên không có node nào trả về cho biến linkNode “Link” nên không có node nào trả về cho biến linkNode

Demo sử dụng getElementById(id)

Hãy dự đoán kết quả đoạn mã sau 

Hi Hi

Hello

Hello

Link Link

Mô hình DOM và CSS

24

Demo sử dụng getElementsByTagName(name)

How are you?

How are you?

I'm fine!

I'm fine!

Mô hình DOM và CSS

25

Demo điều hướng qua các node

Mã cho

Hoa Hong

Hoa Hong

Hoa Lan

Hoa Lan

Hoa Dao

Hoa Dao

Mô hình DOM và CSS

26

Xem cấu trúc DOM trong IEbug

pHoa trên IE có 3 node con

pHoa có 3 node con

Mô hình DOM và CSS

27

Demo điều hướng qua các node

Mã cho Mã cho

Hoa Hong

Hoa Hong

Hoa Lan

Hoa Lan

Hoa Dao

Hoa Dao

Mỗi Browser định nghĩa phương thức riêng để truy cập đến các phần tử

Cấu trúc DOM của mỗi Browser là khác nhau

Mô hình DOM và CSS

28

Xem cấu trúc DOM trong fireBug

pHoa trên fireFox có 7 node con

pHoa có 7 node con

Mô hình DOM và CSS

29

Mỗi browser có cách phân tích khác nhau theo mô hình DOM khác nhau

Tạo thêm các node element

Sử dụng phương thức createElement và appendChild để thêm các node element vào tài liệu

Thiết lập thuộc tính cho node element

Dùng phương thức setAttribute của node để thiết lập thuộc Dùng phương thức setAttribute của node để thiết lập thuộc tính cho chính node đó tính cho chính node đó

Mô hình DOM và CSS

31

Chú ý: Đoạn mã này dành cho

Xóa các node element

Sử dụng phương thức removeChild(nodeId) của node để xóa các node element của node

Hello

Hello

Hi

Hi

Hello

Hello

Hi

Hi

Mô hình DOM và CSS

32

Đoạn mã này dành cho Đoạn mã này dành cho

Nhắc lại về CSS

CSS định nghĩa màu sắc, font, layout… cho trang web CSS định nghĩa màu sắc, font, layout… cho trang web CSS bao gồm một tập các thuộc tính, mỗi thuộc tính có một CSS bao gồm một tập các thuộc tính, mỗi thuộc tính có một tập giá trị nhất định tập giá trị nhất định

font-family:arial; Selector cho biết thành phần nào sẽ được áp dụng Selector cho biết thành phần nào sẽ được áp dụng

selector { property:value;}

Có 3 loại Selector Có 3 loại Selector

Mô hình DOM và CSS

33

Thẻ Thẻ Lớp Lớp ID ID h1 { font-family:arial; } h1 { font-family:arial; } .tenClass { font-family:arial; } .tenClass { font-family:arial; } .tenId { font-family:arial; } .tenId { font-family:arial; }

JavaScript và CSS

Có thể sử dụng JavaScript để thay đổi style cho trang web Có thể sử dụng JavaScript để thay đổi style cho trang web JavaScript cung cấp đối tượng style cho mỗi element của JavaScript cung cấp đối tượng style cho mỗi element của trang web để thay đổi style của trang web trang web để thay đổi style của trang web Sử dụng thuộc tính style của mỗi element để truy cập đến Sử dụng thuộc tính style của mỗi element để truy cập đến đối tượng style đối tượng style var hTieuDe = document.getElementById("hTieuDe"); var hTieuDe = document.getElementById("hTieuDe"); hTieuDe.style.fontFamily = "arial" hTieuDe.style.fontFamily = "arial" Đối tượng style trong javascript có các thuộc tính tương ứng Đối tượng style trong javascript có các thuộc tính tương ứng với các thuộc tính của CSS với các thuộc tính của CSS

Mô hình DOM và CSS

34

Chú ý: Với các thuộc tính CSS có dấu gạch ngang thì sẽ được bỏ Chú ý: Với các thuộc tính CSS có dấu gạch ngang thì sẽ được bỏ dấu gạch ngang và viết hoa chữ cái của từ sau dấu gạch ngang dấu gạch ngang và viết hoa chữ cái của từ sau dấu gạch ngang (font-family fontFamily) (font-family fontFamily)

Thiết lập style cho các element

Có thể thiết lập style cho các thành phần bằng

Mô hình DOM và CSS

35

ID Thẻ Class

Thiết lập style bằng ID

Các bước thực hiện

Bước 1. Dùng ID để truy cập đến các element Bước 2. Sử dụng thuộc tính style để thiết lập style cho element đó

var hTieuDe = document.getElementById("hTieuDe"); var hTieuDe = document.getElementById("hTieuDe"); hTieuDe.style.fontFamily = "arial" hTieuDe.style.fontFamily = "arial"

Mô hình DOM và CSS

36

Demo thiết lập style bằng ID

Xem CSS

Mô hình DOM và CSS

37

Demo thiết lập style bằng ID

Thiet lap style bang ID

Thiet lap style bang ID

Mô hình DOM và CSS

38

Thiết lập style cho một nhóm phần tử

Vấn đề nảy sinh: Vấn đề nảy sinh:

Muốn thay đổi style cho nhiều phần tử Muốn thay đổi style cho nhiều phần tử

Giải pháp: Giải pháp:

Thiet lap style cho nhieu thanh phan

Thanh phan 1

Thanh phan 2

Thanh phan 3

Sử dụng phương thức getElementsByName hoặc Sử dụng phương thức getElementsByName hoặc getElementsByTagName để lấy một nhóm các phần tử getElementsByTagName để lấy một nhóm các phần tử Sử dụng vòng For để duyệt qua các phần tử Sử dụng vòng For để duyệt qua các phần tử

var pAr = document.getElementsByTagName("p"); for (var i = 0; i < pAr.length; i++) {

pAr[i].style.color = "blue";

Mô hình DOM và CSS

39

}

Lấy thông tin browser

Sử dụng thuộc tính userAgent của navigator

alert(navigator.userAgent)

Tạo ra các phiên bản khác nhau cho các browser

Mô hình DOM và CSS

40

Lấy thông tin browser

Vấn đề nảy sinh: Vấn đề nảy sinh:

Có rất nhiều trình duyệt Có rất nhiều trình duyệt Mỗi trình duyệt lại có nhiều phiên bản Mỗi trình duyệt lại có nhiều phiên bản Mỗi trình duyệt lại lại hỗ trợ ở các mức khác nhau Mỗi trình duyệt lại lại hỗ trợ ở các mức khác nhau

Để kiểm tra tất cả trình duyệt, phiên bản của trình duyệt là điều Để kiểm tra tất cả trình duyệt, phiên bản của trình duyệt là điều

không thể không thể

Thuộc tính userAgent cũng có thể trả về thông tin sai Thuộc tính userAgent cũng có thể trả về thông tin sai

Mô hình DOM và CSS

41

 Cần có một giải pháp khác  Cần có một giải pháp khác

Sử dụng cách thử

Sử dụng cách thử để biết trình duyệt hỗ trợ phương thức gì

if (typeof document.body.firstElementChild != "undefined") { if (typeof document.body.firstElementChild != "undefined") {

alert("Browser ho tro phuong thuc firstElementChild"); alert("Browser ho tro phuong thuc firstElementChild");

} else { } else {

alert("Browser khong ho tro phuong thuc firstElementChild"); alert("Browser khong ho tro phuong thuc firstElementChild");

} }

Mô hình DOM và CSS

42

Đối mặt với các browser cũ

Tạo mã javascript chạy tốt trên tất cả các version của tất cả Tạo mã javascript chạy tốt trên tất cả các version của tất cả các trình duyệt là điều không thể các trình duyệt là điều không thể Thiết lập một giới hạn hợp lý các trình duyệt và version để Thiết lập một giới hạn hợp lý các trình duyệt và version để hỗ trợ hỗ trợ Giới hạn càng hẹp thì càng ít khách hàng truy cập được vào Giới hạn càng hẹp thì càng ít khách hàng truy cập được vào website website Đối với browser không hỗ trợ javascript hoặc bị disable Đối với browser không hỗ trợ javascript hoặc bị disable javascript. javascript.

Mô hình DOM và CSS

43

Dùng thẻ Dùng thẻ Dùng thẻ <--> Dùng thẻ <-->

Xử lý sự kiện (tiếp bài 4)

Có thể dùng xử lý sự kiện để thay đổi lại nội dung, cấu trúc trang web

My First Web Page

My First Web Page

Đọc thêm Chương 11 để biết thêm về xử lý sự kiện

Mô hình DOM và CSS

44

Tổng kết bài học

DOM là một chuẩn được định nghĩa bởi W3C (World Wide DOM là một chuẩn được định nghĩa bởi W3C (World Wide Web Consortium) để có thể truy cập và thao tác với các tài Web Consortium) để có thể truy cập và thao tác với các tài liệu như html hay xml bằng các ngôn ngữ lập trình như liệu như html hay xml bằng các ngôn ngữ lập trình như Javascript, VB… Javascript, VB… DOM được chia làm 3 mức CoreDOM, HTML DOM, và XML DOM được chia làm 3 mức CoreDOM, HTML DOM, và XML DOM DOM HTML DOM định nghĩa các đối tượng và thuộc tính của tất HTML DOM định nghĩa các đối tượng và thuộc tính của tất cả các thành phần HTML, và phương thức để truy cập đến cả các thành phần HTML, và phương thức để truy cập đến chúng chúng Tất cả các thành phần trong tài liệu HTML đều được biểu diễn Tất cả các thành phần trong tài liệu HTML đều được biểu diễn bằng đối tượng node bằng đối tượng node DOM trình bày tài liệu HTML theo cấu trúc hình cây DOM trình bày tài liệu HTML theo cấu trúc hình cây Thuộc tính định nghĩa các đặc tính cho node như Thuộc tính định nghĩa các đặc tính cho node như nodeName, nodeValue, nodeType, innerText, childNodes, nodeName, nodeValue, nodeType, innerText, childNodes, parentNode… parentNode…

Mô hình DOM và CSS

45

Tổng kết bài học

Phương thức để thực hiện các thao tác với node như truy Phương thức để thực hiện các thao tác với node như truy cập đến node, thêm node con cho node và xóa node con cập đến node, thêm node con cho node và xóa node con Có thể truy cập đến các node bằng phương thức Có thể truy cập đến các node bằng phương thức getElementById(id), phương thức getElementById(id), phương thức getElementsByTagName(name) hoặc sử dụng mối quan getElementsByTagName(name) hoặc sử dụng mối quan hệ giữa các node để điều hướng hệ giữa các node để điều hướng Có rất nhiều trình duyệt, mỗi trình duyệt lại định nghĩa cấu Có rất nhiều trình duyệt, mỗi trình duyệt lại định nghĩa cấu trúc DOM và các thuộc tính, phương thức cho mỗi Node trúc DOM và các thuộc tính, phương thức cho mỗi Node các nhau  Sử dụng cách thử để biết trình duyệt hỗ trợ các nhau  Sử dụng cách thử để biết trình duyệt hỗ trợ phương thức nào phương thức nào JavaScript cung cấp đối tượng style trong mỗi element để JavaScript cung cấp đối tượng style trong mỗi element để thay đổi style cho các elemetn thay đổi style cho các elemetn

Mô hình DOM và CSS

46