第六章:JavaScript——网页的“动起来”魔法

HTML,CSS以及JavaScript都是网页组成的基本内容,前几章已经介绍HTML和CSS的内容,本章将介绍JavaScript的内容,了解好网页的代码基础组成可以轻松看懂代码组成,为学习爬虫打好基础

目标:学会用JavaScript让网页“活过来”,从“静态海报”变身“交互大片”!
学习目标:掌握变量、函数、DOM操作、事件处理,从此告别“点击不动”的尴尬!


6.1 JavaScript是什么?能吃吗?

(温馨提示:虽然名字里有“JS”,但建议搭配辣条食用更佳)

JavaScript的核心作用:

  • 网页动起来:控制动画、表单验证、实时搜索(比如输入关键词自动提示)
  • 数据交互:通过AJAX从服务器偷数据(哦不,是“请求数据”)
  • 操作HTML/CSS:动态修改页面内容(比如点击按钮切换主题颜色)

举个栗子🌰:

 

html

<!-- HTML静态内容 -->
<button id="btn">点我!</button>
<p id="msg">还没点击</p>

<!-- JS动态效果 -->
<script>
    document.getElementById("btn").onclick = function() {
        document.getElementById("msg").innerHTML = "你点了我!"; // 文字变啦!
    };
</script>

6.2 JavaScript基础语法:从“小白”到“魔法师”

6.2.1 变量与数据类型

 

javascript

// 变量声明(就像给变量起名字)
let age = 25;           // 数字
let name = "咸鱼";       // 字符串
let isStudent = true;   // 布尔值
let hobbies = ["编程", "泡面"]; // 数组
let person = {          // 对象
    name: "咸鱼",
    age: 25
};

// 动态修改变量(比如“变魔术”)
age = 26; // 咸鱼突然年轻了一岁!

6.2.2 函数:代码的“复读机”

 

javascript

// 定义函数(比如“自动卖萌”)
function sayHello(name) {
    return `你好,${name}!我是JS小可爱~`;
}

// 调用函数
console.log(sayHello("咸鱼")); // 输出:你好,咸鱼!我是JS小可爱~

6.3 DOM操作:把HTML当“积木”玩

6.3.1 获取元素(像找对象一样找标签)

 

javascript

// 按ID找元素(一对一)
const btn = document.getElementById("myButton");

// 按类名找元素(一对多)
const items = document.getElementsByClassName("list-item");

// 按标签名找元素(比如所有段落)
const paragraphs = document.getElementsByTagName("p");

6.3.2 修改内容与样式(给HTML“整容”)

 

javascript

// 修改文本内容
document.getElementById("msg").textContent = "内容被JS改啦!";

// 修改样式(比如“一键换装”)
document.querySelector(".btn").style.backgroundColor = "pink";
document.querySelector(".btn").classList.add("active"); // 添加CSS类

6.4 事件处理:让用户“点哪动哪”

6.4.1 常见事件类型

事件类型触发条件代码示例(点击按钮弹窗)
click鼠标点击button.onclick = function() {...}
mouseover鼠标悬停div.onmouseover = function() {...}
submit表单提交form.onsubmit = function(e) {...}

代码示例:动态搜索框

 

html

<input type="text" id="searchInput" placeholder="输入关键词...">
<ul id="resultList"></ul>

<script>
    const input = document.getElementById("searchInput");
    const list = document.getElementById("resultList");

    input.onkeyup = function() {
        const keyword = input.value;
        // 模拟搜索结果(实际开发需调用API)
        list.innerHTML = `
            <li>搜索结果1:${keyword}</li>
            <li>搜索结果2:${keyword}</li>
        `;
    };
</script>

6.5 JS与HTML/CSS联动:三位一体

6.5.1 动态创建元素(像搭乐高一样造页面)

 

javascript

// 创建新元素
const newDiv = document.createElement("div");
newDiv.textContent = "我是新来的!";
newDiv.className = "new-box"; // 添加CSS类

// 插入到页面中
document.body.appendChild(newDiv);

6.5.2 修改CSS样式(动态换肤)

 

javascript

// 点击按钮切换主题颜色
function toggleTheme() {
    const body = document.body;
    body.style.backgroundColor = body.style.backgroundColor === "black" 
        ? "white" 
        : "black";
    body.style.color = body.style.color === "white" 
        ? "black" 
        : "white";
}

6.6 AJAX入门:偷偷获取数据(不刷新页面)

6.6.1 XMLHttpRequest基础

 

javascript

// 创建请求对象
const xhr = new XMLHttpRequest();

// 配置请求(GET方法,请求API数据)
xhr.open("GET", "https://api.example.com/data", true);

// 设置回调函数(数据返回后执行)
xhr.onload = function() {
    if (xhr.status === 200) {
        const data = JSON.parse(xhr.responseText);
        console.log(data); // 输出服务器返回的数据
    }
};

// 发送请求
xhr.send();

6.6.2 Fetch API(更现代的写法)

 

javascript

// 使用Fetch获取数据(更简洁)
fetch("https://api.example.com/data")
    .then(response => response.json())
    .then(data => {
        console.log(data); // 处理数据
    })
    .catch(error => {
        console.error("请求失败:", error);
    });

6.7 实战项目:简易待办事项清单

功能需求:

  1. 添加任务(输入框 + 按钮)
  2. 删除任务(点击任务项)
  3. 本地存储(数据保存到浏览器)

代码实现:

 

html

<input type="text" id="taskInput" placeholder="输入任务...">
<button onclick="addTask()">添加</button>
<ul id="taskList"></ul>

<script>
    // 从本地存储加载数据
    let tasks = JSON.parse(localStorage.getItem("tasks")) || [];

    // 渲染任务列表
    function renderTasks() {
        const list = document.getElementById("taskList");
        list.innerHTML = tasks.map((task, index) => `
            <li>
                ${task}
                <button onclick="deleteTask(${index})">删除</button>
            </li>
        `).join("");
    }

    // 添加任务
    function addTask() {
        const input = document.getElementById("taskInput");
        tasks.push(input.value);
        input.value = "";
        localStorage.setItem("tasks", JSON.stringify(tasks));
        renderTasks();
    }

    // 删除任务
    function deleteTask(index) {
        tasks.splice(index, 1);
        localStorage.setItem("tasks", JSON.stringify(tasks));
        renderTasks();
    }

    // 页面加载时渲染
    renderTasks();
</script>

6.8 学习资源推荐:成为JS大神的捷径

  1. 在线练习

    • JSFiddle(在线写JS代码,实时预览效果)
    • Codewars(通过刷题提升代码能力)
  2. 避坑指南

    • 避免全局变量污染(用let/const代替var
    • ===代替==(严格相等,避免类型转换坑爹)

6.9 本章小结

  • 核心技能

    1. 掌握变量、函数、DOM操作
    2. 能用事件处理实现交互
  • 避坑指南

    • 避免在循环中频繁操作DOM(会卡死!)
    • 异步操作需用回调/Promise/async-await处理

搞笑彩蛋
如果JavaScript会说话,可能会吐槽:“人类总让我控制页面,却忘了给我配个‘防猝死’咖啡机!”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值