1. Trang chủ
  2. » Công Nghệ Thông Tin

Chapter 6 dom ajax jquery

96 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Dom – Ajax - Jquery
Người hướng dẫn Nguyễn Hữu Hiếu
Trường học Trường Đại Học Bách Khoa TP.HCM
Chuyên ngành Khoa Khoa Học và Kỹ Thuật Máy Tính
Thể loại Lập trình web
Năm xuất bản 2020
Thành phố TP.HCM
Định dạng
Số trang 96
Dung lượng 8,4 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DOM & DHTMLn Dynamic web pages with JavaScript and DOM n DHTML Dynamic HTML n DOM nodes and DOM tree n Traversing, editing and modifying DOM nodes n Editing text nodes n Accessing, editi

Trang 1

Chapter 6 DOM – AJAX - jQuery

Lectured by:

Nguyễn Hữu Hiếu

Trang 2

DOM Document Object Model

Trang 3

DOM & DHTML

n Dynamic web pages with JavaScript and DOM

n DHTML (Dynamic HTML)

n DOM nodes and DOM tree

n Traversing, editing and modifying DOM nodes

n Editing text nodes

n Accessing, editing and modifying elements'

attributes

Trang 5

DOM Objects

n DOM components are accessible as objects or

collections of objects

n DOM components form a tree of nodes

• relationship parent node – children nodes

document is the root node

n Attributes of elements are accessible as text

n Browsers can show DOM visually as an

expandable tree

n Firebug for Firefox

n in IE -> Tools -> Developer Tools

Trang 6

This is what the browser reads

This is what the browser displays on screen.

Example

Trang 7

Example

Trang 8

DOM Standards

n DOM Level 3 recommendation

n DOM Level 2 HTML Specification

n additional DOM functionality specific to HTML, in

particular objects for XHTML elements

n But, the developers of web browsers

n don't implement all standards

n implement some standards differently

implement some additional features

Trang 9

Accessing Nodes by id

n Access to elements by their id

n document.getElementById(<id>)

n returns the element with id <id>

n id attribute can be defined in each start tag

n div element with id attribute can be used as an root node for

a dynamic DOM subtree

n span element with id attribute can be used as a dynamic inline element

n The preferred way to access elements

Trang 10

Other Access Methods

n Access by elements' tag

n there are typically several elements with the same tag

n document.getElementsByTagName( <tag> )

n returns the collection of all elements whose tag is <tag>

n the collection has a length attribute

n an item in the collection can be reached by its index

n e.g

n var html = document.getElementsByTagName("html")[0];

n Access by elements' name attribute

n several elements can have the same name

n document.getElementsByName( <name> )

n returns the collection of elements with name <name>

Trang 11

Traversing DOM tree

n Traversal through node properties

n childNodes property

n the value is a collection of nodes

n has a length attribute

n an item can be reached by its index

n e.g var body = html.childNodes[1];

n firstChild , lastChild properties

n nextSibling , previousSibling properties

n parentNode property

Trang 12

Other Node Properties

nodeType property

n ELEMENT_NODE : HTML element

n TEXT_NODE : text within a parent element

n ATTRIBUTE_NODE : an attribute of a parent element

n attributes can be accessed another way

Trang 13

Accessing JS Object's Properties

n There are two different syntax forms to access

object's properties in JS (

n <object>.<property>

n dot notation, e.g., document.nodeType

n <object>[<property-name> ]

n brackets notation, e.g., document["nodeType"]

n this is used in for-in loops

n this works for properties of DOM objects, too

Trang 14

Attributes of Elements

• Access through attributes property

n attributes is an array

n has a length attribute

n an item can be reached by its index

n an item has the properties name and value

n e.g

n var src = document.images[0].attributes[0].value;

n Access through function getAttribute(<name>)

n returns the value of attribute <name>

n e.g

n var src = document.images[0].getAttribute("src");

Trang 15

Text Nodes

n Text node

n can only be as a leaf in DOM tree

n it’s nodeValue property holds the text

n innerHTML can be used to access the text

n Watch out:

n There are many more text nodes than you would expect!

Trang 16

Modifying DOM Structure

n document.createElement(<tag>)

n creates a new DOM element node, with <tag> tag.

n the node still needs to be inserted into the DOM tree

n document.createTextNode(<text>)

n creates a new DOM text with <text>

n the node still needs to be inserted into the DOM tree

Trang 17

Modifying Node Attributes

n <node>.setAttribute(<name>,<value>)

n sets the value of attribute <name> to <value>

n e.g

n document.images[0].setAttribute("src","keiki.jpg");

n That's the standard

n but it doesn't work in IE, there you have to use

n setAttribute( <name=value> )

n e.g

n document.images[0].setAttribute("src=\"keiki.jpg\"");

Trang 18

W3C Document Object Model

Trang 19

Special DOM Objects

n window

n the browser window

n new popup window s can be opened

n sites that the user visited

n makes it possible to go back and forth using scripts

n location

n URL of the document

n setting it goes to another page

Trang 20

AJAX Asynchronous JavaScript And XML

Trang 21

n Allows for more interactive web applications

n Gmail, docs.google.com, Flickr, ajax13, etc.

Trang 22

AJAX

Trang 23

n Additional markup for modifying and updating HTML

n DOM - Document Object Model

n Used via Javascript to work with both the structure of

your HTML and also XML from the server

Trang 24

The XMLHttpRequest Object

n Base object for AJAX

n Used to make connections, send data, receive data, etc.

n Allows your javascript code to talk back and forth

with the server all it wants to, without the user

really knowing what is going on.

n Available in most browsers

n But called different things

Trang 25

The XMLHttpRequest Object

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

try { request = new ActiveXObject("Msxml2.XMLHTTP");

} catch (othermicrosoft) { try {

request = new ActiveXObject("Microsoft.XMLHTTP");

} catch (failed) {

request = false;

} } }

if (!request)

alert("Error initializing XMLHttpRequest!");

}

</script>

Trang 26

n Steps

n Gather information (possibly from HTML form)

n Set up the URL

n Open the connection

n Set a callback method

n Send the request

function getCustomerInfo()

{

var phone = document.getElementById("phone").value;

var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

request.open("GET", url, true);

request.onreadystatechange = updatePage;

request.send(null);

Trang 27

Handling Server Responses

n When the server responds, your callback method

Trang 28

HTTP Ready States

n 0: The request is uninitialized

n Before calling open()

n 1: The request is set up, but hasn’t been sent

n Before calling send()

n 2: The request is sent and is being processed

n Sometimes you can get content headers now

n 3: The request is being processed

n The server hasn’t finished with its response

n 4: The response is complete

Trang 29

The XMLHttpRequest Object

n Return the value of the specified header

n open(“method”, “URL”, async, “uname”, “passwd”)

n Sets up the call

n setRequestHeader(“label”, “value”)

n send(content)

n Actually sends the request

Trang 30

The XMLHttpRequest Object

Trang 31

Typical AJAX Flow

n Make the call

n Gather information (possibly from HTML form)

n Set up the URL

n Open the connection

n Set a callback method

n Send the request

n Handle the response (in callback method)

n When request.readyState == 4 and request.status == 200

n Get the response in either text or xml

n request.responseText or request.responseXML

n Process the response appropriately for viewing

n Get the objects on the page that will change

n document.getElementById or document.getElementByName, etc.

n Make the changes

Trang 32

AJAX Response Handler

alert("status is " + request.status);

} }

Trang 33

jQuery Javascript Library

Trang 34

• jQuery is a lightweight, open-source JavaScript

library that simplifies interaction between HTML

and JavaScript

• It has a great community, great documentation,

tons of plugins, and also adopted by Microsoft

What is jQuery

Trang 35

Download the latest version from

http://jquery.com

Download

Trang 36

Reference it in your markup

jquery.js should contain a copy of the

compressed production code

<script src=“ jquery.js ”/>

Trang 37

<script src="//ajax.googleapis.com/ajax/libs/

jquery/1.9.1/jquery.min.js">

</script>

You can also reference it from Google

Or by another CDN (Content Delivery Network)

Trang 38

Create HTML elements on the fly

var el = $( “<div/>” )

The Magic $() function

Trang 39

Manipulate existing DOM elements

The Magic $() function

Trang 40

Selects document elements (more in a moment…)

The Magic $() function

Trang 43

.addClass(“main”) html(“Hello jQuery”);

Almost every function returns jQuery,

which provides a fluent programming

interface and chainability :

Trang 44

Get > Act Chainability

The $() function

Three Major Concepts of jQuery

Trang 47

$( “div.main” ) // tag and class

$( “table#data” ) // tag and id

More Precise Selectors

Trang 49

$( “table td” ) // descendants

$( “label + input” ) // next

$( “#content ~ div” ) // siblings

Hierarchy Selectors

Trang 50

$( “tr:first” ) // first element

$( “tr:last” ) // last element

$( “tr:lt(2)” ) // index less than

$( “tr:gt(2)” ) // index gr than

$( “tr:eq(2)” ) // index equals

Selection Index Filters

Trang 51

$( “div:visible” ) // if visible

$( “div:hidden” ) // if not

Visibility Filters

Trang 52

$( “div[id]” ) // has attribute

$( “div[dir=‘rtl’]” ) // equals to

$( “div[id^=‘main’]” ) // starts with

$( “div[id$=‘name’]” ) // ends with

$( “a[href*=‘msdn’]” ) // contains

Attribute Filters

Trang 55

$( “#cities option:selected” ).val()

$( “#cities option:selected” ).text()

Trang 56

SELECTORS DEMO

Trang 57

$(“div”) length

Returns number of selected elements

It is the best way to check selector.

A Selector returns a pseudo array of

jQuery objects

Trang 58

$(“div”) get(2) or $(“div”) [2]

Returns a 2 nd DOM element of the selection

Getting a specific DOM element

Trang 59

$(“div”) eq(2)

Returns a 2 nd jQuery element of the selection

Getting a specific jQuery element

Trang 60

this – is a current DOM element

each(fn) traverses every selected

element calling fn()

Trang 61

i - index of the current element

each(fn) also passes an indexer

Trang 62

next(expr) // next sibling

prev(expr) // previous sibling

siblings(expr) // siblings

children(expr) // children

parent(expr) // parent

Traversing HTML

Trang 63

$(“table td”).each(function() {

if ($(this) is(“:first-child”) ) {

$(this).addClass(“firstCol”);

} });

Check for expression

Trang 64

// select paragraph and then find

// elements with class ‘header’ inside

$(“p”) find (“.header”).show();

// equivalent to:

$(“.header”, $(“p”)).show();

Find in selected

Trang 65

$(“<li><span></span></li>”) // li

find (“span”) // span

.html(“About Us”) // span

Trang 66

slice (2, 5) not (“.green”)

.addClass(“middle”);

Get Part of Selected Result

Trang 67

HTML Manipulation

Trang 68

$(“p”) html (“<div>Hello $!</div>”);

// escape the content of div.b

$(“div.a”) text ($(“div.b”) html ());

Getting and Setting Inner Content

Trang 69

// get the value of the checked checkbox

$(“input:checkbox:checked”) val ();

Getting and Setting Values

// set the value of the textbox

$(“:text[name=‘txt’]”) val (“Hello”);

// select or check lists or checkboxes

$(“#lst”) val ([“NY”,”IL”,”NS”]);

Trang 70

Handling CSS Classes

// add and remove class

$(“p”) removeClass (“blue”) addClass (“red”);

// add if absent, remove otherwise

$(“div”) toggleClass (“main”);

// test for class existance

if ($(“div”) hasClass (“main”)) { //… }

Trang 71

// select > append to the end

$(“h1”) append (“<li>Hello $!</li>”);

// select > append to the beginning

$(“ul”) prepend (“<li>Hello $!</li>”);

Inserting new Elements

// create > append/prepend to selector

$(“<li/>”).html(“9”) appendTo (“ul”);

$(“<li/>”).html(“1”) prependTo (“ul”);

Trang 73

$(this) replaceWith( “<div>”

+ $(this).html() + ”</div>” ) ;

});

Replacing Elements while keeping the

content

Trang 74

// remove all children

Trang 75

$(“a”) attr (“href”,”home.htm”);

// <a href=“home.htm”>…</a>

Handling attributes

// set the same as the first one

$(“button:gt(0)”) attr (“disabled”,

$(“button:eq(0)”) attr (“disabled));

// remove attribute - enable

$(“button”) removeAttr (“disabled”)

Trang 76

Setting multiple attributes

Trang 77

// get style

$(“div”) css (“background-color”);

CSS Manipulations

// set style

$(“div”) css (“float”, “left”);

// set multiple style properties

$(“div”) css ({“color”:”blue”,

“padding”: “1em”

“margin-right”: “0”,

marginLeft : “10px”});

Trang 78

Events

Trang 79

$(document) ready (function(){

//…

});

When the DOM is ready…

n Fires when the document is ready for programming

n Uses advanced listeners for detecting.

n window.onload() is a fallback.

Trang 80

// execute always

$(“div”) bind (“click”, fn);

// execute only once

$(“div”) one (“click”, fn);

Attach Event

Possible event values:

blur, focus, load, resize, scroll, unload, beforeunload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown,

keypress, keyup, error

Trang 81

jQuery.Event object

Trang 82

$(“div”) unbind (“click”, fn);

Detaching Events

(Unique ID added to every attached function)

Trang 83

$(“div”) trigger (“click”);

Events Triggering

Triggers browser’s event action as well.

Can trigger custom events.

Triggered events bubble up.

Trang 84

Effects

Trang 85

// just show

$(“div”) show ();

// reveal slowly, slow=600ms

$(“div”) show (“slow”);

// hide fast, fast=200ms

$(“div”) hide (“fast”);

// hide or show in 100ms

$(“div”) toggle (100);

Showing or Hiding Element

Trang 86

$(“div”) slideUp ();

$(“div”) slideDown (“fast”);

$(“div”) slideToggle (1000);

Sliding Elements

Trang 87

$(“div”) fadeIn (“fast”);

$(“div”) fadeOut (“normal”);

// fade to a custom opacity

$(“div”) fadeTo (“fast”, 0.5);

Fading Elements

Fading === changing opacity

Trang 88

$(“div”).hide(“slow”, function() {

alert(“The DIV is hidden”);

} );

$(“div”).show(“fast”, function() {

$( this ).html(“Hello jQuery”);

} ); // this is a current DOM element

Detecting animation completion

Every effect function has a (speed, callback)

Trang 89

// animate(options, duration)

$(“div”) animate ({

width: “90%”, opacity: 0.5, borderWidth: “5px”

}, 1000);

Custom Animation

Trang 90

$(“div”) animate ({width: “90%”},100)

animate ({opacity: 0.5},200) animate ({borderWidth: “5px”});

Chaining Animation

By default animations are queued and than

performed one by one

Trang 91

animate ({width: “90%”},

{ queue:false , duration:1000}) animate ({opacity : 0.5});

Controlling Animations Sync

The first animation will be performed

immediately without queuing

Trang 92

AJAX with jQuery

Trang 93

$ ajax ({url: ”test.php", success: function(result) {

$("#div1").html(result);

} });

Loading content

Trang 94

$ get (“test.php”, {id:1},

Trang 95

$ getJSON (“users.php”, {id:1},

function(users) {

alert(users[0].name);

});

Retrieving JSON Data

Trang 96

Tài Liệu Tham Khảo

n [1] Stepp,Miller,Kirst Web Programming Step by Step.( 1st Edition, 2009) Companion Website:

http://www.webstepbook.com/

n [2] W3Schools,

http://www.w3schools.com/html/default.asp

Ngày đăng: 09/04/2023, 06:48

w