Here’s a complete guide to JavaScript (JS) for creating interactive and dynamic web pages. JavaScript allows you to add functionality such as animations, event handling, form validation, and more.
JavaScript Basics
Adding JavaScript to a Webpage
- Inline JavaScript: Written inside an element’s
onclick
,onmouseover
, etc.
<button onclick="alert('Hello, World!')">Click Me</button>
- Internal JavaScript: Defined within a
<script>
tag.
<script>
console.log('Hello, World!');
</script>
- External JavaScript: Linked via an external
.js
file.
<script src="script.js"></script>
JavaScript Essentials
Variables and Constants
let
: For variables that can change.const
: For constants that remain the same.var
: Older way, avoid using it.
let name = "John";
const age = 30;
console.log(name, age);
Data Types
- Primitive Types:
string
,number
,boolean
,null
,undefined
,symbol
. - Objects:
array
,object
.
Functions
Functions encapsulate reusable code.
function greet(name) {
return `Hello, ${name}!`;
}
console.log(greet('Alice'));
DOM Manipulation
The Document Object Model (DOM) represents the webpage’s structure, allowing JS to manipulate it.
Selecting Elements
- By ID:
let element = document.getElementById('myId');
- By Class:
let elements = document.getElementsByClassName('myClass');
- By Tag Name:
let elements = document.getElementsByTagName('p');
- Using Query Selectors:
let element = document.querySelector('.myClass'); // First match
let elements = document.querySelectorAll('.myClass'); // All matches
Manipulating Elements
- Changing Content:
let heading = document.querySelector('h1');
heading.textContent = 'New Title';
- Changing Styles:
let box = document.querySelector('.box');
box.style.backgroundColor = 'blue';
- Adding/Removing Classes:
box.classList.add('active');
box.classList.remove('active');
Creating and Appending Elements
let newElement = document.createElement('p');
newElement.textContent = 'This is a new paragraph.';
document.body.appendChild(newElement);
Event Handling
Events allow JavaScript to react to user interactions.
- Inline Events:
<button onclick="alert('Button clicked!')">Click Me</button>
- Event Listeners:
let button = document.querySelector('button');
button.addEventListener('click', () => {
alert('Button clicked!');
});
Form Validation
document.querySelector('form').addEventListener('submit', (event) => {
let input = document.querySelector('#name');
if (input.value === '') {
alert('Name cannot be empty!');
event.preventDefault(); // Prevent form submission
}
});
Working with APIs
Use JavaScript to fetch data from APIs.
Using fetch
:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => console.error('Error:', error));
Adding Animations
Simple Animation Example
let box = document.querySelector('.box');
let position = 0;
function moveBox() {
if (position < 300) {
position++;
box.style.left = position + 'px';
requestAnimationFrame(moveBox);
}
}
moveBox();
Putting It All Together
Here’s an example webpage using HTML, CSS, and JavaScript:
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interactive Webpage</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header>
<h1 id="main-title">Welcome to My Webpage</h1>
</header>
<main>
<button id="change-title">Change Title</button>
<div class="box"></div>
</main>
<script src="script.js"></script>
</body>
</html>
CSS
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
header {
background-color: #007bff;
color: white;
text-align: center;
padding: 20px;
}
main {
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
}
.box {
width: 50px;
height: 50px;
background-color: red;
position: relative;
}
JavaScript (script.js)
// Change Title on Button Click
let button = document.getElementById('change-title');
button.addEventListener('click', () => {
let title = document.getElementById('main-title');
title.textContent = 'Title Changed!';
});
// Animate the Box
let box = document.querySelector('.box');
let position = 0;
function animateBox() {
if (position < 300) {
position++;
box.style.left = position + 'px';
requestAnimationFrame(animateBox);
}
}
animateBox();
Features Covered
- Basic DOM Manipulation (Change title).
- Event Handling (Button click).
- CSS Animation with JavaScript (Box movement).
This guide provides a solid foundation for using JavaScript for interactive and dynamic web pages. Let me know if you’d like additional details or examples!