JavaScript 快速入门指南
在HTML中引入JavaScript
语法知识点:
- 内部JavaScript:使用
<script>
标签直接嵌入HTML中 - 外部JavaScript:通过
<script src="file.js">
引入外部文件 - 推荐将脚本放在
<body>
末尾或使用defer
属性
案例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>JavaScript引入方式</title>
<!-- 外部引入方式 -->
<script src="external.js" defer></script>
<!-- 内部引入方式 -->
<script>
// 这里写JavaScript代码
console.log("内部脚本已加载");
</script>
</head>
<body>
<!-- 推荐的位置 -->
<script>
console.log("body底部脚本");
</script>
</body>
</html>
常用输出语句
语法知识点:
console.log()
- 控制台输出alert()
- 弹出警告框document.write()
- 直接写入HTML文档(慎用)innerHTML/textContent
- 修改DOM元素内容
案例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>输出语句示例</title>
</head>
<body>
<div id="output"></div>
<script>
// 1. 控制台输出
console.log("这是一条控制台日志");
console.error("这是一条错误信息");
console.warn("这是一条警告信息");
// 2. 弹出警告框
alert("欢迎来到我的网站!");
// 3. 写入HTML文档(会覆盖整个文档,慎用)
document.write("<p>使用document.write写入的内容</p>");
// 4. 修改DOM元素内容
document.getElementById("output").innerHTML = "<p>使用innerHTML添加的内容</p>";
document.getElementById("output").textContent = "使用textContent添加的纯文本";
</script>
</body>
</html>
基础表达式
语法知识点:
- 变量声明:
let
,const
,var
(不推荐) - 数据类型:Number, String, Boolean, Null, Undefined, Object, Symbol
- 运算符:算术、比较、逻辑、赋值
- 条件语句:if…else, switch
- 循环语句:for, while, do…while
案例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>基础表达式</title>
</head>
<body>
<script>
// 1. 变量声明
let name = "张三"; // 可变的
const PI = 3.1415; // 常量
var age = 25; // 旧方式,不推荐
// 2. 数据类型
let num = 100; // Number
let str = "Hello"; // String
let bool = true; // Boolean
let empty = null; // Null
let notDefined; // Undefined
let obj = {key: "value"}; // Object
// 3. 运算符
let sum = 10 + 5; // 算术
let isEqual = (10 == "10"); // 比较(true,值相等)
let isStrictEqual = (10 === "10"); // 严格比较(false,类型不同)
let and = (true && false); // 逻辑与
let or = (true || false); // 逻辑或
// 4. 条件语句
let score = 85;
if (score >= 90) {
console.log("优秀");
} else if (score >= 60) {
console.log("及格");
} else {
console.log("不及格");
}
// switch语句
let day = 3;
switch(day) {
case 1: console.log("周一"); break;
case 2: console.log("周二"); break;
case 3: console.log("周三"); break;
default: console.log("其他");
}
// 5. 循环语句
// for循环
for (let i = 0; i < 5; i++) {
console.log("for循环:", i);
}
// while循环
let j = 0;
while (j < 5) {
console.log("while循环:", j);
j++;
}
// do...while循环
let k = 0;
do {
console.log("do...while循环:", k);
k++;
} while (k < 5);
</script>
</body>
</html>
函数
语法知识点:
- 函数声明:
function name() {}
- 函数表达式:
const name = function() {}
- 箭头函数:
const name = () => {}
- 参数和返回值
- 作用域和闭包
案例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>函数示例</title>
</head>
<body>
<script>
// 1. 函数声明
function greet(name) {
return "Hello, " + name + "!";
}
console.log(greet("张三"));
// 2. 函数表达式
const add = function(a, b) {
return a + b;
};
console.log("5 + 3 =", add(5, 3));
// 3. 箭头函数
const multiply = (a, b) => a * b;
console.log("5 * 3 =", multiply(5, 3));
// 4. 默认参数
function createUser(name, age = 18) {
console.log(`${name}, ${age}岁`);
}
createUser("李四"); // 使用默认年龄
createUser("王五", 25);
// 5. 作用域
let globalVar = "全局变量";
function scopeTest() {
let localVar = "局部变量";
console.log(globalVar); // 可以访问
console.log(localVar); // 可以访问
}
scopeTest();
// console.log(localVar); // 报错,无法访问局部变量
// 6. 闭包
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
</script>
</body>
</html>
事件
语法知识点:
- 常见事件:click, mouseover, mouseout, keydown, load, submit
- 事件处理方式:
- HTML属性:
onclick="handler()"
- DOM属性:
element.onclick = handler
- 事件监听:
element.addEventListener('click', handler)
- HTML属性:
- 事件对象:包含事件相关信息
- 事件冒泡和捕获
案例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>事件处理</title>
<style>
#box {
width: 200px;
height: 200px;
background-color: lightblue;
margin: 20px;
padding: 20px;
}
#inner {
width: 100px;
height: 100px;
background-color: lightcoral;
}
</style>
</head>
<body>
<!-- 1. HTML属性方式 -->
<button onclick="alert('按钮被点击了!')">点击我</button>
<!-- 2. DOM属性方式 -->
<button id="btn1">按钮1</button>
<!-- 3. 事件监听方式 -->
<button id="btn2">按钮2</button>
<!-- 事件冒泡示例 -->
<div id="box">
外层div
<div id="inner">内层div</div>
</div>
<script>
// 2. DOM属性方式
document.getElementById("btn1").onclick = function() {
console.log("按钮1被点击了");
};
// 3. 事件监听方式(推荐)
document.getElementById("btn2").addEventListener("click", function(e) {
console.log("按钮2被点击了", e); // e是事件对象
});
// 事件对象
document.addEventListener("keydown", function(event) {
console.log(`按下了${event.key}键,键码:${event.keyCode}`);
});
// 事件冒泡
document.getElementById("box").addEventListener("click", function() {
console.log("外层div被点击");
});
document.getElementById("inner").addEventListener("click", function(e) {
console.log("内层div被点击");
// e.stopPropagation(); // 阻止冒泡
});
// 页面加载事件
window.addEventListener("load", function() {
console.log("页面已完全加载");
});
</script>
</body>
</html>
示例:改变网页文字颜色
案例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>改变文字颜色</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
padding: 20px;
}
#content {
padding: 20px;
border: 1px solid #ddd;
margin-bottom: 20px;
}
button {
padding: 8px 16px;
margin-right: 10px;
cursor: pointer;
}
</style>
</head>
<body>
<div id="content">
<h1>欢迎来到我的网站</h1>
<p>这是一个演示如何用JavaScript改变文字颜色的示例。</p>
<p>点击下方按钮可以改变这段文字的颜色。</p>
</div>
<button id="redBtn">红色</button>
<button id="blueBtn">蓝色</button>
<button id="greenBtn">绿色</button>
<button id="randomBtn">随机颜色</button>
<script>
// 获取DOM元素
const content = document.getElementById("content");
const redBtn = document.getElementById("redBtn");
const blueBtn = document.getElementById("blueBtn");
const greenBtn = document.getElementById("greenBtn");
const randomBtn = document.getElementById("randomBtn");
// 改变颜色函数
function changeColor(color) {
content.style.color = color;
}
// 生成随机颜色
function getRandomColor() {
const letters = '0123456789ABCDEF';
let color = '#';
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
// 事件监听
redBtn.addEventListener("click", function() {
changeColor("red");
});
blueBtn.addEventListener("click", function() {
changeColor("blue");
});
greenBtn.addEventListener("click", function() {
changeColor("green");
});
randomBtn.addEventListener("click", function() {
changeColor(getRandomColor());
});
</script>
</body>
</html>
综合案例:用户登录验证
案例代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>用户登录验证</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f5f5f5;
}
.login-container {
background-color: white;
padding: 30px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
width: 350px;
}
h1 {
text-align: center;
color: #333;
margin-bottom: 30px;
}
.form-group {
margin-bottom: 20px;
}
label {
display: block;
margin-bottom: 8px;
font-weight: bold;
color: #555;
}
input {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box;
}
button {
width: 100%;
padding: 12px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
}
button:hover {
background-color: #45a049;
}
.error {
color: red;
font-size: 14px;
margin-top: 5px;
display: none;
}
.success {
color: green;
text-align: center;
margin-top: 20px;
display: none;
}
</style>
</head>
<body>
<div class="login-container">
<h1>用户登录</h1>
<form id="loginForm">
<div class="form-group">
<label for="username">用户名</label>
<input type="text" id="username" placeholder="请输入用户名">
<div id="usernameError" class="error">用户名不能为空</div>
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" id="password" placeholder="请输入密码">
<div id="passwordError" class="error">密码不能少于6位</div>
</div>
<button type="submit">登录</button>
<div id="successMessage" class="success">登录成功!</div>
</form>
</div>
<script>
// 获取DOM元素
const loginForm = document.getElementById("loginForm");
const usernameInput = document.getElementById("username");
const passwordInput = document.getElementById("password");
const usernameError = document.getElementById("usernameError");
const passwordError = document.getElementById("passwordError");
const successMessage = document.getElementById("successMessage");
// 验证用户名
function validateUsername() {
const username = usernameInput.value.trim();
if (username === "") {
usernameError.style.display = "block";
return false;
} else {
usernameError.style.display = "none";
return true;
}
}
// 验证密码
function validatePassword() {
const password = passwordInput.value;
if (password.length < 6) {
passwordError.style.display = "block";
return false;
} else {
passwordError.style.display = "none";
return true;
}
}
// 表单提交处理
loginForm.addEventListener("submit", function(event) {
// 阻止表单默认提交行为
event.preventDefault();
// 验证输入
const isUsernameValid = validateUsername();
const isPasswordValid = validatePassword();
// 如果验证通过
if (isUsernameValid && isPasswordValid) {
// 模拟登录成功
successMessage.style.display = "block";
loginForm.style.display = "none";
// 3秒后重定向(模拟)
setTimeout(function() {
alert("即将跳转到主页...");
// window.location.href = "home.html"; // 实际项目中跳转到主页
}, 3000);
}
});
// 实时验证
usernameInput.addEventListener("input", validateUsername);
passwordInput.addEventListener("input", validatePassword);
</script>
</body>
</html>
这个综合案例包含了:
- 表单元素获取
- 输入验证逻辑
- 事件处理(表单提交、输入事件)
- DOM操作(显示/隐藏元素)
- 定时器使用
- 样式和交互效果
所有代码都有详细注释,可以帮助理解JavaScript的各个基础知识点在实际项目中的应用。