JavaScript and HTML
This article explains JavaScript and HTML.
YouTube Video
javascript-html-dom.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <title>JavaScript & HTML</title>
6 <style>
7 * {
8 box-sizing: border-box;
9 }
10
11 body {
12 margin: 0;
13 padding: 2em;
14 font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
15 background-color: #f7f9fc;
16 color: #333;
17 line-height: 1.6;
18 }
19
20 .container {
21 max-width: 800px;
22 margin: 0 auto;
23 padding: 1em;
24 background-color: #ffffff;
25 border: 1px solid #ccc;
26 border-radius: 10px;
27 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
28 }
29
30 h1, h2 {
31 font-size: 1.5rem;
32 color: #007bff;
33 margin-top: 0.5em;
34 margin-bottom: 0.5em;
35 border-left: 5px solid #007bff;
36 padding-left: 0.6em;
37 background-color: #e9f2ff;
38 }
39
40 button {
41 display: block;
42 margin: 1em auto;
43 padding: 0.75em 1.5em;
44 font-size: 1rem;
45 background-color: #007bff;
46 color: white;
47 border: none;
48 border-radius: 6px;
49 cursor: pointer;
50 transition: background-color 0.3s ease;
51 }
52
53 button:hover {
54 background-color: #0056b3;
55 }
56
57 #output {
58 margin-top: 1em;
59 background-color: #1e1e1e;
60 color: #0f0;
61 padding: 1em;
62 border-radius: 8px;
63 min-height: 200px;
64 font-family: Consolas, monospace;
65 font-size: 0.95rem;
66 overflow-y: auto;
67 white-space: pre-wrap;
68 }
69
70 .highlight {
71 outline: 3px solid #ffc107; /* yellow border */
72 background-color: #fff8e1; /* soft yellow background */
73 transition: background-color 0.3s ease, outline 0.3s ease;
74 }
75
76 .active {
77 background-color: #28a745; /* green background */
78 color: #fff;
79 box-shadow: 0 0 10px rgba(40, 167, 69, 0.5);
80 transition: background-color 0.3s ease, box-shadow 0.3s ease;
81 }
82 </style>
83</head>
84<body>
85 <div class="container">
86 <h1>JavaScript Console</h1>
87 <button id="executeBtn">Execute</button>
88 <div id="output"></div>
89 </div>
90
91 <div class="container">
92 <h2>HTML Sample</h2>
93 <div id="content">Hello, World!</div>
94 <button id="changeText">Change Text</button>
95 </div>
96
97 <script>
98 // Override console.log to display messages in the #output element
99 (function () {
100 const originalLog = console.log;
101 console.log = function (...args) {
102 originalLog.apply(console, args);
103 const output = document.getElementById('output');
104 output.textContent += args.map(String).join(' ') + '\n';
105 };
106 })();
107
108 document.getElementById('executeBtn').addEventListener('click', () => {
109 // Prevent multiple loads
110 if (document.getElementById('externalScript')) return;
111
112 const script = document.createElement('script');
113 script.src = 'javascript-html-dom.js';
114 script.id = 'externalScript';
115 //script.onload = () => console.log('javascript-html-dom.js loaded and executed.');
116 //script.onerror = () => console.log('Failed to load javascript-html-dom.js.');
117 document.body.appendChild(script);
118 });
119 </script>
120</body>
121</html>
The window
Object in JavaScript
The window
object in JavaScript is the global object in a browser environment, providing functions and information related to the web page and browser window. Since window
is the global scope of the browser, all JavaScript code running in the browser becomes part of the window
object. The window
object plays an important role in running JavaScript in the browser environment, providing many APIs and properties.
Key Features of the window
Object
Properties
1// Get and display the document's title
2console.log(`Title: ${window.document.title}`);
3
4// Get and display the current URL
5console.log(`URL: ${window.location.href}`);
6
7// Go back to the previous page
8// Note: this will navigate back in history, so be careful when running it
9console.log("Navigating back to the previous page...");
10window.history.back();
11
12// Display the browser's user agent
13console.log(`User Agent: ${window.navigator.userAgent}`);
14
15// Display the width and height of the viewport
16console.log(`Viewport Width: ${window.innerWidth}`);
17console.log(`Viewport Height: ${window.innerHeight}`);
window.document
: Accesses the current HTML document.window.location
: Manages the current URL and browser navigation.window.history
: Accesses the browser's history information and allows forward and backward navigation.window.navigator
: Provides information about the browser and device.window.innerWidth
/window.innerHeight
: Retrieves the width and height of the viewport.
Methods
1// Show an alert
2window.alert('Hello, this is an alert!');
3
4// Show a confirmation dialog
5if (window.confirm('Are you sure you want to proceed?')) {
6 console.log('User clicked OK');
7} else {
8 console.log('User clicked Cancel');
9}
10
11// Show a prompt dialog
12const userInput = window.prompt('Please enter your name:');
13console.log(`Hello, ${userInput}!`);
14
15// Open a new tab
16window.open('https://www.example.com', '_blank');
17
18// Display a message after 3 seconds
19window.setTimeout(() => {
20 console.log('This message appears after 3 seconds!');
21}, 3000);
22
23// Display a message every second
24const intervalId = window.setInterval(() => {
25 console.log('This message appears every second!');
26}, 1000);
27
28// Clear the interval after 5 seconds
29setTimeout(() => {
30 clearInterval(intervalId);
31 console.log('Interval cleared.');
32}, 5000);
window.alert()
: Displays an alert dialog.window.confirm()
: Displays a dialog asking for user confirmation and returns an OK or Cancel result.window.prompt()
: Displays a dialog prompting user input and retrieves the entered value.window.open()
: Opens a new window or tab.window.setTimeout()
/window.setInterval()
: Sets a timer to execute a function after a certain time or at regular intervals.
Event Handling
1// Display a message when the page is fully loaded
2window.onload = () => {
3 console.log('Page is fully loaded!');
4};
5
6// Display a message when the window is resized
7window.onresize = () => {
8 console.log('Window resized! New size:', window.innerWidth, 'x', window.innerHeight);
9};
10
11// Display a message when the page is being scrolled
12window.onscroll = () => {
13 console.log('Page is being scrolled!');
14};
window.onload
: This event is triggered when the page has fully loaded.window.onresize
: This event is triggered when the window is resized.window.onscroll
: This event fires when the user scrolls the page.
Role as a Global Variable
1var myVar = 10;
2console.log(window.myVar); // 10
- The
window
object holds global variables and functions. In other words, declared variables and functions automatically become properties ofwindow
.
DOM Manipulation in JavaScript
JavaScript DOM (Document Object Model) manipulation is used to dynamically interact with elements on the web page. The DOM represents the structure of an HTML document as a tree, which can be altered using JavaScript to modify the structure and control the display of the page.
Basics of the DOM
The DOM treats the HTML of a webpage as objects, allowing access and modification of elements and attributes. Use the document
object to access the HTML document.
Retrieving DOM Elements
JavaScript has a number of methods to access elements in the DOM.
document.getElementById()
: Retrieves an element by itsid
attribute.document.getElementsByClassName()
: Retrieves elements by class name. Returns anHTMLCollection
.HTMLCollection
is a live collection that reflects changes in the DOM in real time.document.getElementsByTagName()
: Retrieves elements by tag name. Returns anHTMLCollection
.document.querySelector()
: Uses a CSS selector to retrieve the first matching element.document.querySelectorAll()
: Uses a CSS selector to retrieve all matching elements. Returns aNodeList
.NodeList
is a static collection that holds the state at the time of retrieval and does not reflect subsequent changes to the DOM.
Example: getElementById
and querySelector
1<div id="content">Hello, World!</div>
2<button id="changeText">Change Text</button>
1const content = document.getElementById('content');
2console.log(content.textContent); // "Hello, World!"
3
4const button = document.querySelector('#changeText');
DOM Manipulation
Various operations can be performed on the elements that are obtained.
Changing Text
To change the text of an element, use textContent
or innerHTML
.
textContent
: Get or change the text content of an element. HTML tags are not interpreted.innerHTML
: Get or change the HTML content of an element. Strings containing HTML tags are also processed.
1content.textContent = 'Hello, world!'; // Change the text
2button.innerHTML = '<strong>Click to change</strong>'; // Change including HTML
Changing Attributes
Use setAttribute()
and getAttribute()
to change element attributes.
1button.setAttribute('disabled', 'true'); // Disable the button
2const id = content.getAttribute('id'); // Get the "content"
3console.log(id);
Changing CSS
Use the style
property to change CSS styles.
1content.style.color = 'red'; // Change the text color to red
2content.style.fontSize = '20px'; // Change the font size
Manipulating Classes
Use classList
to add or remove classes from an element.
add()
: Adds a class.remove()
: Removes a class.toggle()
: Adds or removes a class depending on whether it exists.contains()
: Checks whether a class exists.
1content.classList.add('highlight'); // Add a class
2button.classList.toggle('active'); // Toggle a class
Creating and Deleting DOM Elements
Creating New Elements
Use document.createElement()
to create a new element and add it to the DOM.
1const newDiv = document.createElement('div'); // Create a new div element
2newDiv.textContent = 'This is a new element';
3document.body.appendChild(newDiv); // Append to the body element
Deleting Elements
Use the remove()
method to delete an element.
1newDiv.remove(); // Remove the created element
Adding Events
As part of DOM manipulation, you can add event handlers that respond to user interactions. Use addEventListener()
to handle events such as clicks and keyboard interactions.
1button.addEventListener('click', () => {
2 content.textContent = 'The text has been changed';
3});
In this example, clicking a button changes the text of the #content
element.
Navigating the DOM Tree
You can navigate the DOM to access parent and sibling elements.
parentNode
: Accesses the parent node.childNodes
: Accesses the child nodes. You can access all types of nodes, not just element nodes like HTML tags, but also text nodes and comment nodes.firstChild
/lastChild
: Accesses the first and last child elements.nextSibling
/previousSibling
: Accesses the next and previous sibling elements.
1const parent = content.parentNode; // Get the parent element
2const firstChild = parent.firstChild; // Get the first child element
3console.log(firstChild);
Example: Adding a New Item to a List
Here is an example of adding a new item to a list.
1// Get the container element where the HTML will be inserted
2const content = document.getElementById('content');
3
4// Create the <ul> element with id="list"
5const list = document.createElement('ul');
6list.id = 'list';
7
8// Add initial list items
9const item1 = document.createElement('li');
10item1.textContent = 'Item 1';
11list.appendChild(item1);
12
13const item2 = document.createElement('li');
14item2.textContent = 'Item 2';
15list.appendChild(item2);
16
17// Create the <button> element with id="addItem"
18const addItemButton = document.createElement('button');
19addItemButton.id = 'addItem';
20addItemButton.textContent = 'Add Item';
21
22// Append the list and button to the content container
23content.appendChild(list);
24content.appendChild(addItemButton);
25
26// Add event listener to the button
27addItemButton.addEventListener('click', () => {
28 const newItem = document.createElement('li');
29 newItem.textContent = 'New Item';
30 list.appendChild(newItem);
31});
In this code, clicking the "Add Item" button adds a new <li>
element to the list.
Summary
- JavaScript DOM manipulation allows you to get, change, create, and delete elements within an HTML document.
- You can get elements using methods like
getElementById()
andquerySelector()
. - Use
textContent
orinnerHTML
to change text and HTML, andsetAttribute()
to manipulate attributes. - Use
createElement()
to create new elements andremove()
to delete them. - You can create interactive web pages that respond to user actions through event handling.
You can follow along with the above article using Visual Studio Code on our YouTube channel. Please also check out the YouTube channel.