Misy233 CH5
Misy233 CH5
CHAPTER 5
5.1 JavaScript Execution Environment
(JavaScript XHTML Documents)
• The JavaScript Window object represents the window in which the browser
displays documents
• The Window object provides the largest enclosing referencing environment
for scripts (Multiple windows possible but this course deals with single-
window Works)
• All global variables are properties of Window
• Implicitly defined Window properties:
• Document (XHTML): a reference to the Document object that the window displays
• Frames : an array of references to the frames of the document
• Every Document object has:
• Forms : an array of references to the forms of the document
• Each Form object has an elements array, which has references to the form’s elements
• Document also has arrays of anchors, links, images, applets. This
chapter deals with Form Array only
5.2 The Document Object Model (by W3C)
• Both IE8 and FX3 have ways to show the tree of a document
• See book p. 188 for the necessary steps for both browsers to get the tree of a given document
• DeveloperTools feature of browsers (F12 in FF displays DOM-Inspector)
• ‘DOM-Inspector’ is not enabled by default. To Enable it, F12 -> · · · -> Settings -> Enable-DOM
2. Element names–requires the element and all of its ancestors (except body) to have name attributes
• Example:
document.myForm.pushMe
Problem: Name Attribute is not allowed in HTML 1.1 and old browsers
5.3 Element Access in JavaScript (cont.)
-Checkboxes and radio button have an implicit array, which has their name
<form id = "topGroup">
<input type = "checkbox"name = "toppings" value = "olives"/>
...
<input type = "checkbox"name = "toppings" value = "tomatoes"/>
</form>
...
let numChecked = 0;
let dom = document.getElementById("topGroup");
for (index = 0; index < dom.toppings.length; index++)
if (dom.toppings[index].checked]
numChecked++;
5.4 Events and Event Handling
• Purpose of Events: Requiring compulsary data in fields before submitting form
• An event is a notification that something specific has occurred, either with the
browser or an action of the browser user
• An event handler is a script that is implicitly executed in response to the
appearance of an event
• The process of connecting an event handler to an event is called registration
• Don’t use document.write in an event handler, because the output may go on top
of the display. Events usually occur after the whole document is displayed.
EVENT TAG ATTRIBUTE EVENT TAG ATTRIBUTE
blur onblur mousedown onmousedown
change onchange mousemove onmousemove
Only a few events
click onclick mouseout onmouseout
dblclick ondblclick mouseover onmouseover
will be discussed
focus onfocus mouseup onmouseup in this course.
keydown onkeydown reset onreset
keypress onkeypress select onselect
keyup onkeyup submit onsubmit
load onload unload onunload
5.4 Events and Event Handling (cont.)
Event handlers can be registered in 2 ways: (event tag attribute OR event property)
1. By assigning the event handler script to an event tag attribute
Registering
event handler to
onclick = "alert('Mouse click!');"
‘’form <input>’’
onclick = "myHandler();"
5.5 Handling Events from Body Elements
• This registration must follow both the handler function and the HTML form
• If this is done for a radio button group, each element
of the array must be assigned
• In this case, the checked property of a radio button object is used to determine
whether a button is clicked
5.6 Handling Events from Button Elements (cont.)
• To keep the form active after the event handler is finished, the
handler must return false
Example : comparing passwords
• The form just has two password input boxes to get the passwords and Reset
and Submit buttons
• The event handler is triggered by the Submit button
• Handler actions:
• 1. If no password has been typed in the first box, focus on that box and return
false
• 2. If the two passwords are not the same, focus and select the first box and
return false. if they are the same, return true
5.7 Handling Events from Textbox and
Password Elements (cont.)
• Does not include DOM 0 features, but they are still supported by browsers
• DOM 2 is modularized—one module is Events, which has two submodules,
HTMLEvents and MouseEvents, whose interfaces are Event(blur,
change, etc.) and MouseEvent(click, mouseup, etc.)
• Event propagation (This is a very complex model. Only basics will be covered)
• The node of the document tree where the event is created is called the target node,
and 3 phases are created ;
• The capturing phase (the first phase)
• Events begin at the root and move toward the target node
• Registered and enabled event handlers at nodes along the way are run
• The second phase is at the target node
• If there are registered but not enabled handlers there for the event, they are run
• The third phase is the bubbling phase
• Event goes back to the root; all encountered registered but not enabled handlers are run
5.8 The DOM 2 Event Model (cont.)
<!DOCTYPEhtml>
<html>
<body>
<h2>APagewithHTMLDOM</h2>
<pid="demo"></p>
<script>
document.getElementById("demo").innerHTML="HelloWorld!";
</script>
</body>
</html>
method property
Finding HTML Elements by Id
<!DOCTYPE html>
<html>
<body>
<h2>Finding HTML Elements by Id</h2>
<p id="intro">HelloWorld!</p>
<p>This example demonstrates the get Elements By Id
method.</p>
<p id="demo"></p>
<script>
letmyElement=document.getElementById("intro");
document.getElementById("demo").innerHTML=
"Thetextfromtheintroparagraphis"+myElement.innerHTML;
</script>
</body>
</html>
Finding HTML Elements by Tag Name
<!DOCTYPE html>
<html>
<body>
<h2>Finding HTML Elements by Tag Name</h2>
<div id = "main">
<p>The DOM is very useful.</p>
<p>This example demonstrates the get Elements By Tag Name method.</p>
</div>
<p id="demo"></p>
<script>
let x = document.getElementById("main");
let y = x.getElementsByTagName("p");
document.getElementById("demo").innerHTML=
'The first paragraph (index 0) inside "main" is:'+y[0].innerHTML;
</script>
</body>
</html>
Finding HTML Elements with Forms
<!DOCTYPEhtml>
<html>
<body>