set 2: dom it452 advanced web and internet systems
TRANSCRIPT
![Page 1: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/1.jpg)
Set 2: DOM
IT452 Advanced Web and Internet Systems
![Page 2: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/2.jpg)
Review – DHTML Basics
• Find the HTML object we want to changevar domLink = document.getElementById("linkToAnimal");
• Change the object’s:– HTML properties
domLink.href = "cat.html";
– CSS properties
domLink.style.backgroundColor = "blue";
![Page 3: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/3.jpg)
Simple Paint (ex1.html) – Part 1
<html xmlns = "http://www.w3.org/1999/xhtml">
<head> <title>IT 452 DOM demo</title>
<script type="text/javascript" > <!--
var currentAction = "red"; function doupdate(curNode ) { curNode.style.backgroundColor = currentAction; }
// --> </script></head>
![Page 4: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/4.jpg)
Simple Paint (ex1.html) – Part 2
<body>
<h1> IT 452 DOM demo </h1> <p>Tools:</p> <ul> <li onclick="currentAction='red' "> Set red </li> <li onclick="currentAction='blue' "> Set blue </li> </ul> <table border="1"> <tr> <td onclick="doupdate(this)"> thing 1 </td> <td onclick="doupdate(this)"> thing 2 </td> </tr> <tr> <td onclick="doupdate(this)"> thing 3 </td> <td onclick="doupdate(this)"> thing 4 </td> </tr> </table></body></html>
![Page 5: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/5.jpg)
What does the DOM tree look like?
![Page 6: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/6.jpg)
ex2.html – add insert/delete/edit function doupdate(curNode ) { var parent = curNode.parentNode;
if (currentAction == "insert") { newThing = document.createElement("td"); parent.insertBefore(newThing, curNode); newThing.innerHTML = "hello"; }
else if (currentAction == "delete") { parent.removeChild(curNode);
}
else if (currentAction == "edit") { curNode.innerHTML = window.prompt("Enter new text", "");
}
else { curNode.style.backgroundColor = currentAction; }
}
![Page 7: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/7.jpg)
ex3.html – fully functional function doupdateDyn() { doupdate(this); } function doupdate(curNode ) { var parent = curNode.parentNode; if (currentAction == "insert") { newThing = document.createElement("td"); parent.insertBefore(newThing, curNode); newThing.innerHTML = "hello"; newThing.onclick = doupdateDyn; }
else if (currentAction == "delete") { parent.removeChild(curNode);
} else if (currentAction == "edit") {
curNode.innerHTML = window.prompt("Enter new text", curNode.innerHTML); }
else { curNode.style.backgroundColor = currentAction; } }
![Page 8: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/8.jpg)
Event Variables Require Event Types
1. Javascript is weakly typed
2. A given variable can be assigned strings, ints, events, etc.
3. However, variables can be assumed to be a certain type, used later by other code.
• newThing.href assumes a string
• newThing.onclick assumes an event
• If you violate these assumptions, something will likely break later on your webpage.
![Page 9: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/9.jpg)
Creating an onclick event for a node.
Bad Ideas
•newThing.onclick = "doupdate(this)“;
•newThing.onclick = doupdateDyn();
Good Ideas
•newThing.onclick = doupdateDyn;
![Page 10: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/10.jpg)
Three Ways to do this
newThing.onclick = doupdateDyn;
newThing.addEventListener(‘click’, doupdateDyn);
newThing.onclick = function() { doupdate(this); }
![Page 11: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/11.jpg)
ex4.html – more elegant / alternatives
function doupdate(curNode ) { var parent = curNode.parentNode;
if (currentAction == "insert") { newThing = document.createElement("td"); parent.insertBefore(newThing, curNode); newThing.innerHTML = "hello"; newThing.onclick = function() {doupdate(this)}; }
else if (currentAction == "delete") { parent.removeChild(curNode);
}
else if (currentAction == "edit") { curNode.firstChild.nodeValue =
window.prompt("Enter new text", curNode.innerHTML); }
else { curNode.style.backgroundColor = currentAction; } }
![Page 12: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/12.jpg)
Summary
Grab HTML elements•document.getElementById(“yourid”)
•document.getElementsByTagName(“p”)
•node.childNodes
•node.parentNode
Create new HTML elements•node = document.createElement(“p”)
•node = document.createTextNode(“text that goes in a p later”)
Add new HTML elements to the page•node.appendChild(newnode)
•node.insertBefore(newnode, node)
Change HTML attributes/style•yourvar.href = “somelink.html”
•yourvar.style.styleName = “style-val”
![Page 13: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/13.jpg)
Tips
• Remember JavaScript console
• How many children?– Use DOM Inspector to see (Firefox and Chrome)
– From ex5.html: else if (currentAction == "parent") {
var kids = parent.childNodes;
window.alert("Number children: "+kids.length);
window.alert("Type of first: "+kids[0].nodeType);
}
• See DOM reference links under IT452 page– Use the API!
![Page 14: Set 2: DOM IT452 Advanced Web and Internet Systems](https://reader036.vdocument.in/reader036/viewer/2022082820/5697bf841a28abf838c86cd7/html5/thumbnails/14.jpg)
Ex6.html: iterating over children
var kids = parent.childNodes;for (var i=0; i < kids.length; i++) { var theKid = kids[i]; window.alert("Kid #“ + i + " has type“ + theKid.nodeType); }