bài 5: mô hình dom và css - giáo trình fpt

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

Upload: hoc-lap-trinh-web

Post on 17-Jun-2015

2.552 views

Category:

Documents


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

Page 2: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Mô hình lập trìnhMô hình lập trình hướng đối tượngThuộc tính, phương thức và lớpTạo đối tượngThêm thuộc tính và phương thức vào đối tượngTạo lớp, tạo đối tượng từ lớpCác thao tác với đối tượng trong lớpBrowser Object Model

Hệ thống bài cũ

Mô hình lập trìnhMô hình lập trình hướng đối tượngThuộc tính, phương thức và lớpTạo đối tượngThêm thuộc tính và phương thức vào đối tượngTạo lớp, tạo đối tượng từ lớpCác thao tác với đối tượng trong lớpBrowser Object Model

Mô hình DOM và CSS 2

Page 3: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

Giới thiệu về mô hình Document Object ModelGiới thiệu về HTML DOMCấu trúc DOMThuộc tính của nodePhương thức của node

Truy cập đến nodeThêm nodeXóa node

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

Giới thiệu về mô hình Document Object ModelGiới thiệu về HTML DOMCấu trúc DOMThuộc tính của nodePhương thức của node

Truy cập đến nodeThêm nodeXóa node

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

Mô hình DOM và CSS 3

Page 4: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Document Object Model

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

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

Mô hình DOM và CSS 4

The Document Object Model is a platform- andlanguage-neutral interface that will allowprograms and scripts to dynamically accessand update the content, structure and style ofdocuments (Định nghĩa bởi W3C)

Page 5: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

DOM

DOM được chia thành 3 mứcCore DOM: Tiêu chuẩn cho bất kỳ tài liệu có cấu trúc nàoXML DOM: Tiêu chuẩn cho tài liệu XMLHTML DOM: Tiêu chuẩn cho tài liệu HTML

Mô hình DOM và CSS 5

Page 6: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

HTML DOM

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

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

Mô hình DOM và CSS 6

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

Page 7: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Node trong DOM

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

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

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

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

Mô hình DOM và CSS 7

Page 8: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Tài liệu HTML ví dụ

<html ><head>

<title> Hi</title></head><body>

<p> Hello</p><a href = “http://google.com”>Link</a>

</body></html>

Node gốc là <html><html> có hai node con là <head> và <body><head> có một node con là <title><body> chứa hai node con là <p> và <a>

Mô hình DOM và CSS 8

<html ><head>

<title> Hi</title></head><body>

<p> Hello</p><a href = “http://google.com”>Link</a>

</body></html>

Page 9: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Cấu trúc hình cây DOM

DOM trình bày tài liệu HTML theo cấu trúc hình cây

Root Element:

<html>

Root Element:

<html>

<html ><head>

<title>Hi</title></head><body>

<p>Hello</p><a href = “http://google.com”>Link</a>

</body></html>

DOM trình bày tài liệu HTML theo cấu trúc hình cây

Mô hình DOM và CSS 9

Element:<head>

Element:<head>

Element:<title>

Element:<title>

Text: “Hi”Text: “Hi”

Element:<body>

Element:<body>

Element:<p>

Element:<p>

Text:“Hello”

Text:“Hello”

Element:<a>

Element:<a>

Attribute:“href”

Attribute:“href”

Text:“Link”Text:

“Link”

<html ><head>

<title>Hi</title></head><body>

<p>Hello</p><a href = “http://google.com”>Link</a>

</body></html>

Page 10: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Quan hệ giữa các node

Giữa các node có mối quan hệ cha, con (parent, children) vàanh em (siplings)

Node cha có các node con, các node con cùng cấp bậc gọi làanh em

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 chaMột node có thể có nhiều node con hoặc không có nodecon nàoNode lá (leaf) là node không có node conNhững node anh em (siplings) với nhau là node có cùng mộtnode cha

Giữa các node có mối quan hệ cha, con (parent, children) vàanh em (siplings)

Node cha có các node con, các node con cùng cấp bậc gọi làanh em

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 chaMột node có thể có nhiều node con hoặc không có nodecon nàoNode lá (leaf) là node không có node conNhững node anh em (siplings) với nhau là node có cùng mộtnode cha

Mô hình DOM và CSS 10

Page 11: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Quan hệ giữa các node

<html> không có node cha, <html> là node gốc<html> có hai node con là <head> và <body>, <head> và<body> là anh em<head> có một node con là <title><title> có một node con là text node “hi”<body> chứa hai node con là <p> và <a>, <p> và <a> là anhem

Node cha của node <head> và <body> là node <html>Node cha của text node “Hello” là node <p>

Text node “Hi”, “Hello” , “Link” và attribute node “href” đều lànode lá

<html> không có node cha, <html> là node gốc<html> có hai node con là <head> và <body>, <head> và<body> là anh em<head> có một node con là <title><title> có một node con là text node “hi”<body> chứa hai node con là <p> và <a>, <p> và <a> là anhem

Node cha của node <head> và <body> là node <html>Node cha của text node “Hello” là node <p>

Text node “Hi”, “Hello” , “Link” và attribute node “href” đều lànode lá

Mô hình DOM và CSS 11

Page 12: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Con cả, con út

<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>

Root Element:<html>

parentNode

Mô hình DOM và CSS 12

Element:<head>

Element:<body>

Là các concủa <html>và anh emvới nhau

firstChild

lastChild

next

Sipl

ing

prev

ious

Sipl

ing

Page 13: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Thuộc tính và phương thức của node

DOM định nghĩa các thuộc tính và các phương thức chocác node để hỗ trợ cho việc lập trìnhThuộc tính định nghĩa các đặc tính cho nodePhương thức để thực hiện các thao tác với node

Truy cập đến nodeThêm node con cho nodeXóa node con

DOM định nghĩa các thuộc tính và các phương thức chocác node để hỗ trợ cho việc lập trìnhThuộc tính định nghĩa các đặc tính cho nodePhương thức để thực hiện các thao tác với node

Truy cập đến nodeThêm node con cho nodeXóa node con

Mô hình DOM và CSS 13

Page 14: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Các thuộc tính của node

Thuộc tính Giải thích

x là đối tượng node

x.innerHTML Giá trị văn bản của x

x.nodeName Tên của x

x.nodeValue Giá trị của x

x.nodeType Kiểu của Node

Mô hình DOM và CSS 14

x.nodeType Kiểu của Node

x.parentNode Node cha của x

x.childNodes Các node con của x

x.attributes Các node thuộc tính của x

Đọc thêmhttp://www.w3schools.com/htmldom/dom_nodes_info.asp đểtra tra cứu thêm về các node

Page 15: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Có thể xem hoặc thiết lập giá trị cho các thuộctính bằng cách truy cập đến thuộc tính

<body><div id = "dHoa">

<p>Hoa Hong</p><p>Hoa Lan</p>

</div><script type ="text/javascript">

var pHoa = document.getElementById("dHoa")document.write("Ten node: " + pHoa.nodeName + "</br>");document.write("Gia tri của node: " + pHoa.nodeValue + "</br>");document.write("Node cha: " + pHoa.parentNode.nodeName + "</br>");document.write("Node con dau tien: " + pHoa.firstChild.innerText + "</br>");document.write("Node con thu hai: " +

pHoa.childNodes[1].childNodes[0].nodeValue + "</br>");pHoa.childNodes[1].innerText = "Hoa phuong vi";

</script></body>

Demo truy cập thuộc tính của Node

<body><div id = "dHoa">

<p>Hoa Hong</p><p>Hoa Lan</p>

</div><script type ="text/javascript">

var pHoa = document.getElementById("dHoa")document.write("Ten node: " + pHoa.nodeName + "</br>");document.write("Gia tri của node: " + pHoa.nodeValue + "</br>");document.write("Node cha: " + pHoa.parentNode.nodeName + "</br>");document.write("Node con dau tien: " + pHoa.firstChild.innerText + "</br>");document.write("Node con thu hai: " +

pHoa.childNodes[1].childNodes[0].nodeValue + "</br>");pHoa.childNodes[1].innerText = "Hoa phuong vi";

</script></body>

Mô hình DOM và CSS 15

Thay đổi nội dungtrong thẻ <p>

Xem Demo Truy cap cac thuoc tinh của node

Page 16: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Giá trị thuộc tính quan trọng

Thuộc tính Của node Có giá trị là

nodeName element Tên thẻ HTML tương ứng

attribute Tên thuộc tính

text #text

document #document

nodeValue element null

attribute giá trị của thuộc tínhattribute giá trị của thuộc tính

text văn bản

nodeType element 1

attribute 2

text 3

comment 8

document 9

Mô hình DOM và CSS 16

Page 17: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Demo về thuộc tính innerHTML

<head><script type="text/javascript">

function hienThi() {var node = document.getElementById("anhDiv");node.innerHTML = "<img src='mu.jpg'>";

}</script>

</head><body>Nhấn vào đây để hiển thị ảnh:<div id="anhDiv"></div><input type="button" value="Hiển thị ảnh" onclick="hienThi()"/></body></html>

Mô hình DOM và CSS 17

<head><script type="text/javascript">

function hienThi() {var node = document.getElementById("anhDiv");node.innerHTML = "<img src='mu.jpg'>";

}</script>

</head><body>Nhấn vào đây để hiển thị ảnh:<div id="anhDiv"></div><input type="button" value="Hiển thị ảnh" onclick="hienThi()"/></body></html>

Page 18: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Demo về thuộc tính innerHTML

Mô hình DOM và CSS 18

Xem Demo/InnerHTML

Page 19: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Các phương thức của node

Thuộc tính Giải thích

x là đối tượng node

x.getElementById(id) Trả về thành phần có id xác định

x.getElementsByTagName(name)

Trả về tất cả các thành phần với tên thẻ xác định

Mô hình DOM và CSS 19

x.getElementsByTagName(name)

Trả về tất cả các thành phần với tên thẻ xác định

x.appendChild(node) Thêm node con vào node x

x.removeChild(node) Xóa node con của node x

Page 20: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Truy cập đến các node

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

Mô hình DOM và CSS 20

Page 21: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Demo sử dụng getElementById(id)

<html ><head>

<title>Hi</title></head><body>

<p>Hello</p><a id = "link" href = "http://www.google.com">Link</a><script type ="text/javascript" >

var linkNode = document.getElementById("link");alert(linkNode.href);

</script></body>

</html>

Mô hình DOM và CSS 21

<html ><head>

<title>Hi</title></head><body>

<p>Hello</p><a id = "link" href = "http://www.google.com">Link</a><script type ="text/javascript" >

var linkNode = document.getElementById("link");alert(linkNode.href);

</script></body>

</html>

Page 22: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Demo sử dụng getElementById(id)

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

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

<html ><head>

<title>Hi</title></head><body >

<p>Hello</p><script type ="text/javascript" >

var linkNode = document.getElementById("link");alert(linkNode.href);

</script><a id = "link" href = "http://www.google.com">Link</a>

</body></html>

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

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

Mô hình DOM và CSS 22

<html ><head>

<title>Hi</title></head><body >

<p>Hello</p><script type ="text/javascript" >

var linkNode = document.getElementById("link");alert(linkNode.href);

</script><a id = "link" href = "http://www.google.com">Link</a>

</body></html>

Page 23: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Demo sử dụng getElementById(id)

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 JavaScriptdocument.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

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.Tức là dịch từng dòng một, khi đến lệnh JavaScriptdocument.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

Page 24: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Demo sử dụng getElementById(id)Hãy dự đoán kết quả đoạn mã sau

<html ><head>

<title>Hi</title><script type ="text/javascript" >

function checkHref() {var linkNode = document.getElementById("link");alert(linkNode.href);

}</script>

</head><body onload = "checkHref()">

<p>Hello</p><a id = "link" href = "http://www.google.com">Link</a>

</body></html>

Mô hình DOM và CSS 24

<html ><head>

<title>Hi</title><script type ="text/javascript" >

function checkHref() {var linkNode = document.getElementById("link");alert(linkNode.href);

}</script>

</head><body onload = "checkHref()">

<p>Hello</p><a id = "link" href = "http://www.google.com">Link</a>

</body></html>

Page 25: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Demo sử dụnggetElementsByTagName(name)

<html><head>

<title></title></head><body>

<p>How are you?</p><p>I'm fine!</p><script type ="text/javascript">

var p = document.getElementsByTagName("p");p[0].style.background = "#3333CC";p[1].style.background = "#CC0066";

</script></body></html>

Mô hình DOM và CSS 25

<html><head>

<title></title></head><body>

<p>How are you?</p><p>I'm fine!</p><script type ="text/javascript">

var p = document.getElementsByTagName("p");p[0].style.background = "#3333CC";p[1].style.background = "#CC0066";

</script></body></html>

Page 26: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Mã cho

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

<html ><body>

<div id = "hoa"><p>Hoa Hong</p><p>Hoa Lan</p><p>Hoa Dao</p>

</div><script type ="text/javascript">

var divHoa = document.getElementById("hoa");var pHoaHong = divHoa.firstChild;alert(pHoaHong.nextSibling.childNodes[0].nodeValue);

</script></body></html>

Mô hình DOM và CSS 26

<html ><body>

<div id = "hoa"><p>Hoa Hong</p><p>Hoa Lan</p><p>Hoa Dao</p>

</div><script type ="text/javascript">

var divHoa = document.getElementById("hoa");var pHoaHong = divHoa.firstChild;alert(pHoaHong.nextSibling.childNodes[0].nodeValue);

</script></body></html>

Page 27: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Xem cấu trúc DOM trong IEbug

pHoa trên IE có 3 node con

Mô hình DOM và CSS 27

pHoa có 3 node con

Page 28: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Mã cho

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

<html><body>

<div id = "hoa"><p>Hoa Hong</p><p>Hoa Lan</p><p>Hoa Dao</p>

</div><script type ="text/javascript">

var divHoa = document.getElementById("hoa");var pHoaHong = divHoa.firstElementChild;

alert(pHoaHong.nextSibling.nextSibling.childNodes[0].nodeValue);</script>

</body></html>

Mỗi Browser định nghĩaphương thức riêng để

truy cập đến các phần tử

Mã cho

Mô hình DOM và CSS 28

<html><body>

<div id = "hoa"><p>Hoa Hong</p><p>Hoa Lan</p><p>Hoa Dao</p>

</div><script type ="text/javascript">

var divHoa = document.getElementById("hoa");var pHoaHong = divHoa.firstElementChild;

alert(pHoaHong.nextSibling.nextSibling.childNodes[0].nodeValue);</script>

</body></html>

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

Page 29: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Xem cấu trúc DOM trong fireBug

pHoa trên fireFox có 7 node con

Mô hình DOM và CSS 29

pHoa có 7node con

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

Page 30: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

<html ><head></head><body><script type="text/javascript">

var newElement = document.createElement("p");document.body.appendChild(newElement);newElement.appendChild(document.createTextNode("Hello World"));

</script></body></html>

Mô hình DOM và CSS 30

<html ><head></head><body><script type="text/javascript">

var newElement = document.createElement("p");document.body.appendChild(newElement);newElement.appendChild(document.createTextNode("Hello World"));

</script></body></html>

Page 31: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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ộctính cho chính node đó

<head></head><body id ="bd"><script type="text/javascript">

var newElement = document.createElement("p");newElement.setAttribute("id", "newElement");document.body.appendChild(newElement);newElement.appendChild(document.createTextNode("Hello World"));

var ne = document.getElementById("newElement");alert(ne.innerText);

</script></body></html>

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

Mô hình DOM và CSS 31

<head></head><body id ="bd"><script type="text/javascript">

var newElement = document.createElement("p");newElement.setAttribute("id", "newElement");document.body.appendChild(newElement);newElement.appendChild(document.createTextNode("Hello World"));

var ne = document.getElementById("newElement");alert(ne.innerText);

</script></body></html>

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

Page 32: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

<html ><head></head><body >

<p id="pHello">Hello</p><p id="pHi">Hi</p>

<script type="text/javascript">

document.body.removeChild(pHi);</script></body></html>

<html ><head></head><body >

<p id="pHello">Hello</p><p id="pHi">Hi</p>

<script type="text/javascript">var pHi = document.getElementById("pHi");document.body.removeChild(pHi);</script></body></html>

Mô hình DOM và CSS 32

<html ><head></head><body >

<p id="pHello">Hello</p><p id="pHi">Hi</p>

<script type="text/javascript">

document.body.removeChild(pHi);</script></body></html>

<html ><head></head><body >

<p id="pHello">Hello</p><p id="pHi">Hi</p>

<script type="text/javascript">var pHi = document.getElementById("pHi");document.body.removeChild(pHi);</script></body></html>

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

Page 33: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

Selector cho biết thành phần nào sẽ được áp dụng

Có 3 loại SelectorThẻ h1 { font-family:arial; }Lớp .tenClass { font-family:arial; }ID .tenId { font-family:arial; }

Nhắc lại về CSS

font-family:arial;

selector { property:value;}

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

Selector cho biết thành phần nào sẽ được áp dụng

Có 3 loại SelectorThẻ h1 { font-family:arial; }Lớp .tenClass { font-family:arial; }ID .tenId { font-family:arial; }

Mô hình DOM và CSS 33

Page 34: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Có thể sử dụng JavaScript để thay đổi style cho trang webJavaScript cung cấp đối tượng style cho mỗi element củatrang web để thay đổi style của trang webSử dụng thuộc tính style của mỗi element để truy cập đếnđối tượng style

Đối tượng style trong javascript có các thuộc tính tương ứngvới các thuộc tính của CSS

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(font-family fontFamily)

JavaScript và CSS

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

Có thể sử dụng JavaScript để thay đổi style cho trang webJavaScript cung cấp đối tượng style cho mỗi element củatrang web để thay đổi style của trang webSử dụng thuộc tính style của mỗi element để truy cập đếnđối tượng style

Đối tượng style trong javascript có các thuộc tính tương ứngvới các thuộc tính của CSS

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(font-family fontFamily)

Mô hình DOM và CSS 34

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

Page 35: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

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

Mô hình DOM và CSS 35

Page 36: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Các bước thực hiệnBước 1. Dùng ID để truy cập đến các elementBước 2. Sử dụng thuộc tính style để thiết lập style cho elementđó

Thiết lập style bằng ID

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

Mô hình DOM và CSS 36

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

Page 37: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

Mô hình DOM và CSS 37

Xem CSS

Page 38: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

<html ><head>

<script type="text/javascript">function xanhButtonClick() {

var pText = document.getElementById("pText");pText.style.color = "blue";

}function doButtonClick() {

var pText = document.getElementById("pText");pText.style.color = "red";

}</script>

</head><body><p id="pText">Thiet lap style bang ID</p><button onclick="xanhButtonClick();">Xanh</button><button onclick="doButtonClick();">Do</button></body></html>

Mô hình DOM và CSS 38

<html ><head>

<script type="text/javascript">function xanhButtonClick() {

var pText = document.getElementById("pText");pText.style.color = "blue";

}function doButtonClick() {

var pText = document.getElementById("pText");pText.style.color = "red";

}</script>

</head><body><p id="pText">Thiet lap style bang ID</p><button onclick="xanhButtonClick();">Xanh</button><button onclick="doButtonClick();">Do</button></body></html>

Page 39: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Vấn đề nảy sinh:Muốn thay đổi style cho nhiều phần tử

Giải pháp:Sử dụng phương thức getElementsByName hoặcgetElementsByTagName để 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ử

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

<p id = "pText">Thiet lap style cho nhieu thanh phan</p><p id = "p1">Thanh phan 1</p><p id = "p2">Thanh phan 2</p><p id = "p3">Thanh phan 3</p>

Vấn đề nảy sinh:Muốn thay đổi style cho nhiều phần tử

Giải pháp:Sử dụng phương thức getElementsByName hoặcgetElementsByTagName để 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ử

Mô hình DOM và CSS 39

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

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

Page 40: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Lấy thông tin browser

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

alert(navigator.userAgent)

Mô hình DOM và CSS 40

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

Page 41: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Lấy thông tin browser

Vấn đề nảy sinh:Có rất nhiều trình duyệtMỗi trình duyệt lại có nhiều phiên bảnMỗ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ềukhông thể

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

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

Vấn đề nảy sinh:Có rất nhiều trình duyệtMỗi trình duyệt lại có nhiều phiên bảnMỗ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ềukhông thể

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

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

Mô hình DOM và CSS 41

Page 42: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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") {alert("Browser ho tro phuong thuc firstElementChild");

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

}

Mô hình DOM và CSS 42

if (typeof document.body.firstElementChild != "undefined") {alert("Browser ho tro phuong thuc firstElementChild");

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

}

Page 43: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

Đố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ả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 đểhỗ trợGiới hạn càng hẹp thì càng ít khách hàng truy cập được vàowebsiteĐối với browser không hỗ trợ javascript hoặc bị disablejavascript.

Dùng thẻ <noscript></noscript>Dùng thẻ <!--><-->

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ểThiết lập một giới hạn hợp lý các trình duyệt và version đểhỗ trợGiới hạn càng hẹp thì càng ít khách hàng truy cập được vàowebsiteĐối với browser không hỗ trợ javascript hoặc bị disablejavascript.

Dùng thẻ <noscript></noscript>Dùng thẻ <!--><-->

Mô hình DOM và CSS 43

Page 44: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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úctrang web

<html><head><script type="text/javascript">

function displayDate() {document.getElementById("demo").innerHTML = Date();

}</script></head><body>

<h1 id ="demo">My First Web Page</h1><button type="button" onclick="displayDate()">Display Date</button>

</body></html>

Mô hình DOM và CSS 44

<html><head><script type="text/javascript">

function displayDate() {document.getElementById("demo").innerHTML = Date();

}</script></head><body>

<h1 id ="demo">My First Web Page</h1><button type="button" onclick="displayDate()">Display Date</button>

</body></html>

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

Page 45: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

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

Mô hình DOM và CSS 45

Page 46: Bài 5: Mô hình DOM và CSS - Giáo trình FPT

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

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ư truycập đến node, thêm node con cho node và xóa node conCó thể truy cập đến các node bằng phương thứcgetElementById(id), phương thứcgetElementsByTagName(name) hoặc sử dụng mối quanhệ giữa các node để điều hướngCó rất nhiều trình duyệt, mỗi trình duyệt lại định nghĩa cấutrúc DOM và các thuộc tính, phương thức cho mỗi Nodecác nhau Sử dụng cách thử để biết trình duyệt hỗ trợphương thức nàoJavaScript cung cấp đối tượng style trong mỗi element đểthay đổi style cho các elemetn

Mô hình DOM và CSS 46