Tổng quan về DOM – HTML• HTML DOM = HTML D ocument O bject M odel • Xem trang web như một cây gồm nhiều nút node • Mỗi nút là một thành phần tag HTML, thuộc tính, nội dung của tag • DOM
Trang 1Javascript - DOM
Luong Tran Hy Hien
Trang 31 Tổng quan về DOM – HTML
• HTML DOM = HTML D ocument O bject M odel
• Xem trang web như một cây gồm nhiều nút (node)
• Mỗi nút là một thành phần (tag HTML, thuộc tính, nội dung của tag)
• DOM định nghĩa một cách để truy xuất và điều khiển các thành phần trong 1 trang web
Trang 41 Tổng quan về DOM – HTML
Trang 51 Tổng quan về DOM – HTML
Trang 61 Tổng quan về DOM – HTML
Trang 71 Tổng quan về DOM – HTML
• Mỗi đối tượng DOM đều có danh sách thuộc
thức (Method) tương ứng
Trang 82 Một số đối tượng trong DOM
Trang 92.1 DOM - window
• Là thể hiện của đối tượng cửa sổ trìnhduyệt
• 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 trongwindow
• Nếu tài liệu định nghĩa nhiều frame,
Trang 102.1 DOM - window
Trang 112.2 DOM - location
Chứa thông tin hiện tại của URL
Trang 122.3 DOM - history
Cung cấp danh sách các URL
đã được duyệt bởi người sử dụng
Trang 132.4 DOM - navigator
Cung cấp thông tin
về trình duyệt
Trang 142.5 DOM - document
• Biểu diễn cho toàn bộ các thành phần
• Dùng để lấy thông tin về tài liệu, các
Trang 152.5 DOM - document
Trang 162.6 DOM – image
• Có thể truy xuất thông qua:
– document images [ index ]
– document images [“ ImageName ”]
– document ImageName
• Một số thuộc tính của Image Obj
– alt, border, classname, title ,
– width, height , hspace, vspace,
– id, name, src , lowsrc, longDesc,
– isMap, complete
Trang 172.7 DOM – form
• Dùng để truy xuất đến tag < form > trên trang web
• Có thể truy xuất thông qua
– document forms [ index ]
– document forms [“ FormName ”]
– document FormName
• Một số thuộc tính
– action, method , id, name , target
– classname , title, language, dir
– elements[ ]
• Một số phương thức
Trang 182.8 DOM – element
• Tương ứng với form field
• Cách truy xuất
document.formName.controlName
< form name=“ searchForm ” action=“xuly.php”>
< input type=“text” name=“entry”>
< input type=“submit” name=“ sender ” value=“Search”>
</ form >
-document searchForm entry
document searchForm elements[ 0 ]
document forms[“ searchForm ”].elements[“ entry ”]
Trang 193 Làm việc với document - DOM
Biểu diễn nội dung tài liệu theo cấu trúc cây
Trang 203 Làm việc với document - DOM
Cấu trúc cây của tài liệu
Trang 213 Làm việc với document - DOM
Trang 223 Làm việc với document - DOM
• getElementById(“id1 ” ): trả về node có giá trị thuộc tính id = id1
• Ví dụ :
// <p id="id1" >
// </p>
var node = document getElementById(“ id1 ”);
var nodeName = node nodeName; // p
var nodeType = node nodeType; // 1
var nodeValue = node nodeValue; // null
Trang 233 Làm việc với document - DOM
• getElement s ByName ( name1 ): trả về danh sách node
có giá trị của thuộc tính name = name1
• Ví dụ:
var nodeList =document.getElementsByName(“ name1 ”);
for(var i=0;i< nodeList length;++i)
{
var nodeName = nodeList (i).nodeName;
var nodeType = nodeList (i).nodeType;
Trang 24Đối tượng Document - DOM
Trả về danh sách node có NodeName =
var nodeName = nodeList(i).nodeName;
var nodeType = nodeList(i).nodeType;
var nodeValue = nodeList.item(i).nodeValue;
Trang 253 Làm việc với document - DOM
• createElement(nodeName): tạo ra một node
• Ví dụ:
var imgNode = document createElement(“ img ”); imgNode.src=“images/test.gif”;
//<img src=“images/test.gif”/>
Trang 263 Làm việc với document - DOM
• createTextNode(content): tạo ra một textnode
Trang 273 Làm việc với document - DOM
• nodeName.appendChild(newNode): thêm
node con của một node
• Ví dụ:
// <p id=“id1”> Some text </p>
var pNode =document.getElementById(“id1”);
var imgNode =document.createElement(“ img ”);
imgNode src=“images/test.gif”;
pNode appendChild( imgNode );
Trang 283 Làm việc với document - DOM
• nodeName.insertBefore(newNode,childRef):
sách các node con của một node
// <p id=“id1”><img src=“images/test.gif”></p>
var pNode =document.getElementById(“id1”);
// -var firstChild =pNode.firstChild;
var newNode =document.createTextNode(“ Some text ”); pNode.insertBefore(newNode, firstChild );
// <p id=“id1”>
// -// Some text <img src=“images/test.gif”>
Trang 293 Làm việc với document - DOM
• nodeName.removeChild(child): xóa child
trong danh sách các node con của một node gọi phương thức, trả về node bị xóa
// <p id=“id1”><img src=“images/test.gif”>Hình ảnh</p> // -
var pNode =document.getElementById(“id1”);
if ( pNode hasChildNodes())
var rmNode=pNode.removeChild(pNode.lastChild); // -
Trang 303 Làm việc với document - DOM
• replaceChild ( newChild, oldChild )
newChild trong danh sách các node con của node hiện hành
Trang 313 Làm việc với document - DOM
• innerHTML
Chỉ định nội dung HTML bên trong một
node
Ví dụ:
//<p id=“para1" >some text</p>
var theElement = document.getElementById("para1");
theElement innerHTML = “Some <b> new </b> text”;
Trang 323 Làm việc với document - DOM
• innerText
Tương tự innerHTML, tuy nhiên bất kỳ nội dùng nào đưa vào cũng được xem như là text hơn là các thẻ HTML
Ví dụ:
var theElement = document.getElementById("para1");
theElement.innerText = “Some <b> new </b> text”;
// Kết quả hiển thị trên trình duyệt
// bên trong thẻ p: “Some <b> new </b> text”
Trang 333 Làm việc với document - DOM
• setAttribute ( attributeName , value )
Chỉ định attribute của một node với giá trị là value
Ví dụ:
<font id=“font1” >Some text</font>
<script language=“javascript” >
var fontNode = document.getElementById(“ font1 ”);
fontNode setAttribute (“color”,”red”);
fontNode setAttribute (“size”,”5”);
</script>
Trang 343 Làm việc với document - DOM
• getAttribute ( attributeName )
Lấy giá trị của một attribute trong node
Ví dụ:
var font1 = document.getElementById(“font1”);
alert(font1.getAttribute(“color”));
Trang 353 Làm việc với document - DOM
• Thay đổi định dạng CSS của một node
thông qua thuộc tính style
Ví dụ:
<p id=“myParagraph” style="color: red;">This is a text</p>
<script language=“javascript” >
var node = document.getElementById(“myParagraph”);
node.style.color = "green";
node.style.fontSize = "14";
Trang 363 Làm việc với document - DOM
• Thay đổi định dạng css thông qua thuộc tính className
Trang 373 Làm việc với document - DOM
• Thay đổi tham chiếu đến file CSS
Ví dụ:
<head>
<script language="javascript" >
function changeSkin() {
Trang 384 Xử lý sự kiện
1 Event Object
2 Event Handle
Trang 394.1 Event Object
• Events là các sự kiện xảy ra trên trangWeb
• Do người dùng hoặc do hệ thống tạo ra
• Mỗi sự kiện sẽ liên quan đến một eventobject
• Event cung cấp các thông tin
– Loại event
Trang 404.1 Event Object
Trang 444.3 Xử lý sự kiện
Ví dụ
Trang 454.3 Xử lý sự kiện
Trang 46X = <INPUT TYPE="text" NAME=" expr " SIZE=15> <BR>
<input type="button“ value=“Cal” ONCLICK="compute(this.form)">
<p>X * X = <SPAN ID=" result "></SPAN></p>
</form>
Trang 475 Một số ví dụ
Trang 48< INPUT type=“ text ” name =“myTextbox”
onblur=“ document bgColor =‘ aqua ’;”
onfocus=“ document bgColor =‘ dimgray ’;” >
</ FORM >
Trang 495 Một số ví dụ
Trang 50Ví dụ: Dynamic Table
• Viết trang web cho phép tạo table có số dòng, số cột do người dùng nhập vào
Trang 52TBody
body
Trang 53Ví dụ: Dynamic Table
tượng thẻ DOM HTML
thẻ DOM HTML như là nút con
Trang 54var nDong = txtSoDong.value;
var nCot = txtSoCot.value;
for (i=0; i<nDong; i++) {
var tagTR = document.createElement("tr");
for (j=0; j<nCot; j++) {
var tagTD = document.createElement("td");
var textNode = document.createTextNode(i+""+j); tagTD.appendChild(textNode);
Trang 55Tham khảo
• Website W3school
• Slide lập trình Web, ĐH KHTN, 2007