<script>
<body>
.js
<script src="script.js" defer></script>
defer
lec13-js-demo.html
<p>
<div>
<button>
document.getElementById("title"); // Finds an element by ID document.getElementsByTagName("p"); // Gets all <p> elements
<h1 id="title">Hello</h1> <script> document.getElementById("title").textContent = "JavaScript Updated!"; </script>
element.parentNode; // Get parent node element.childNodes; // Get all child nodes element.textContent; // Get or change text
<p>Hello <span>World</span></p> <script> console.log(document.querySelector("p").childNodes); // Logs text + <span> </script>
element.setAttribute("class", "myClass"); // Add a class element.appendChild(newElement); // Add a child element
<p id="text">Hello</p> <script> document.getElementById("text").setAttribute("class", "highlight"); </script>
let items = document.querySelectorAll("li"); items.forEach(item => console.log(item.textContent)); // Loops through list items
<ul> <li>Item 1</li> <li>Item 2</li> </ul> <script> let items = document.querySelectorAll("li"); console.log(items.length); // Outputs: 2 </script>
click
keydown
EventTarget.addEventListener()
document.querySelector("button").addEventListener("click", () => { alert("Button clicked!"); });
on<eventtype>
<button onclick="alert('Clicked!')">Click me</button> <!-- Bad practice because it mixes JS with HTML (harder to maintain). -->
document.querySelector("button").onclick = function() { alert('Clicked!'); } // Can only register one event handler per event.
object.property
document.title
title
document.title = "New Title"; // changes the title of the page.
element.style.color
color
style
document.querySelector("h1").style.color = "red";
document.querySelector("#babson").src = "new-babson-image.jpg";
object.method(arguments)
arguments
document.querySelector("#main")
"main"
console.log(message)
message
element.setAttribute("class", "highlight")
Experiment with lec13-js-demo.html using what you just learned.