bài 5: mô hình dom và css - giáo trình fpt
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 nhauTRANSCRIPT
Bài 5:Mô hình DOM và CSS
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
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
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)
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
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
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
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>
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>
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
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
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
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
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
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
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
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>
Demo về thuộc tính innerHTML
Mô hình DOM và CSS 18
Xem Demo/InnerHTML
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
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
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>
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>
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
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>
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>
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>
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
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
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
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>
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
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
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
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"
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
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"
Demo thiết lập style bằng ID
Mô hình DOM và CSS 37
Xem CSS
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>
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";}
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
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
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");
}
Đố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
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
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
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