JavaScript 基础与网页交互

变量 & 函数 DOM 操作 jQuery 事件

🕐 课堂节奏(50分钟)

0-5 MIN
开场铺垫
为什么学JS
5-20 MIN
案例 1
打招呼机器
20-35 MIN
案例 2
密码强度检测
35-47 MIN
案例 3
jQuery名片
47-50 MIN
小结
布置作业
📣 为什么要学 JavaScript?

前面学了 HTML 和 CSS。HTML 负责网页的内容,CSS 负责网页的样式。但是大家有没有发现一个问题——我们做出来的网页是"死的",用户没办法和它互动。

⏸ 停顿一下 举个例子:你打开淘宝,点击"加入购物车"按钮,购物车数字就会变。你在微信网页版输入消息点发送,消息就出去了。这些"点击之后页面会变化"的行为,全都是 JavaScript 实现的。

所以,记住一句话:HTML 是骨架,CSS 是皮肤,JavaScript 是肌肉——它让网页动起来。

今天我们不讲理论,就做三个小东西,每个十几分钟,做完你就知道 JavaScript 是怎么让网页"活"起来的。

1 案例一:打招呼机器

学会三件事 → 变量、函数、onclick 事件

我们来做第一个小东西:一个"打招呼机器"。页面上有一个输入框,你输入名字,点个按钮,页面就会显示"你好,XXX!"。⏸ 很简单对吧?但是这里面包含了 JavaScript 最核心的三个概念。我们一个一个来看。

💡 这个案例要教的三个知识点

📦
变量(var)— 用来"存东西"的盒子。比如把用户输入的名字存到一个叫 name 的盒子里。
⚙️
函数(function)— 一段打好包的代码,起个名字,需要的时候"调用"它就执行。像个按钮一按就工作的机器。
👆
onclick 事件— 告诉浏览器:当用户"点击"这个按钮时,去执行某个函数。这就是"交互"的本质。
完整代码 demo1_greet.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>打招呼机器</title>
</head>
<body>

    <h1>欢迎来到 JavaScript 的世界!</h1>

    <!-- 输入框:用户在这里打字 -->
    <input type="text" id="nameInput" placeholder="请输入你的名字">

    <!-- 按钮:onclick 表示"点击时执行 greet() 函数" -->
    <button onclick="greet()">打招呼</button>

    <!-- 这个 p 标签一开始是空的,等着 JS 往里面写内容 -->
    <p id="output"></p>

    <script>
    function greet() {
        var name = document.getElementById("nameInput").value;

        if (name === "") {
            alert("请先输入名字!");
            return;
        }

        var msg = "你好," + name + "!欢迎学习 JavaScript 🎉";
        document.getElementById("output").innerHTML = msg;
    }
    </script>

</body>
</html>

📖 逐行讲解

1
<input type="text" id="nameInput">
这是一个输入框type="text" 表示它接收文字输入。重点是 id="nameInput"——我们给这个输入框起了个名字叫 "nameInput"。等一下 JavaScript 就靠这个名字来找到它、读取里面的内容。
💬 类比:id 就像学生的学号,全页面唯一,JS 靠学号"点名"找人。
2
<button onclick="greet()">打招呼</button>
这是一个按钮onclick="greet()" 的意思是:当用户点击这个按钮的时候,浏览器就去执行一个叫 greet函数。注意后面有个小括号 (),这是调用函数的写法。
💬 类比:onclick 就像一个遥控器按钮,按下去就执行对应的操作。
3
<p id="output"></p>
这是一个空的段落标签。它一开始什么都没有,就是个空盒子。等一下 JavaScript 会往这个盒子里"塞"欢迎语。注意它也有 id="output",方便 JS 找到它。
4
function greet() { ... }
function 是 JavaScript 的关键字,意思是"定义一个函数"。greet 是我们给这个函数起的名字。大括号 { } 里面的代码,就是按下按钮后要执行的全部操作。
💬 类比:function 就像是"打包"。你把一堆操作打包成一个"工具",需要时喊一声名字就执行。
5
var name = document.getElementById("nameInput").value;
这行做了三件事:
document.getElementById("nameInput") — 在整个页面中,找到 id 为 "nameInput" 的那个元素(就是我们的输入框)。
.value — 取出输入框里用户实际输入的文字
var name = ... — 把取出来的文字存到一个叫 name变量里。
💬 类比:这就像是"去第三排第二个同学那里(getElementById),拿到他写的纸条(.value),然后把纸条内容记在自己笔记本上(var name)"。
6
if (name === "") { alert("请先输入名字!"); return; }
if 是"如果"的意思。name === "" 检查变量 name 是不是空的(用户什么都没输入)。如果是空的:
alert(...) — 弹出一个提示框告诉用户"请先输入名字"。
return — 意思是"到此为止,后面的代码不再执行了",直接退出函数。
💬 这是做"防呆设计"——防止用户什么都不填就点按钮。
7
var msg = "你好," + name + "!欢迎学习 JavaScript";
这里用 + 号把三段文字拼接在一起。如果用户输入的是"小明",那么 msg 的值就变成 "你好,小明!欢迎学习 JavaScript"。在 JavaScript 里,+ 号用在字符串之间就是"把文字连起来"的意思。
8
document.getElementById("output").innerHTML = msg;
和第5行类似,先找到 id 为 "output" 的元素(就是那个空的 <p> 标签),然后用 .innerHTML 把它的内容设置为 msg。这样欢迎语就显示在页面上了!
💬 .value 是"读取输入框的内容",.innerHTML 是"设置元素显示的内容"。一个读,一个写。

好,代码讲完了。现在我们来实际跑一下。👉 现场演示

大家看,我在输入框里输入"小明",然后点"打招呼"—— ⏸ 点击按钮 看到了吗?下面出现了"你好,小明!"。这就是 JavaScript 在工作:读取输入 → 处理数据 → 写回页面。

我再试一下什么都不输入直接点—— ⏸ 点击按钮 弹出来一个提示框"请先输入名字!"。这就是 if 判断在起作用。

▶ 现场演示

(结果会显示在这里)

好,我们来回顾这个案例教了什么:
第一,var 用来创建变量,存储数据;
第二,function 用来定义函数,把代码打包;
第三,onclick 让按钮被点击时执行函数。
这三个东西是 JavaScript 最基础的积木,后面所有复杂的东西都建立在它们之上。

2 案例二:密码强度检测器

学会三件事 → DOM 读写、if-else 条件判断、动态修改样式

第二个案例稍微升级一下。我们做一个"密码强度检测器"——你输入一个密码,它告诉你这个密码是弱的、中等的还是强的。就像你在注册账号时看到的那个密码强度条。

这个案例在第一个的基础上增加了两个新知识:if-else if-else 条件判断,和用 JS 改变页面元素的颜色

💡 这个案例新增的知识点

🔀
if / else if / else— 根据不同条件走不同的路。密码短就说"弱",中等就说"中等",长就说"强"。
📏
.length— 字符串的一个属性,返回这段文字有多少个字符。比如 "hello".length 等于 5。
🎨
.style.color— 用 JS 直接修改元素的 CSS 样式。比如 result.style.color = "red" 就把文字变红。
完整代码 demo2_password.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>密码强度检测</title>
</head>
<body>

    <h1>密码强度检测器</h1>
    <input type="password" id="pwdInput" placeholder="请输入密码">
    <button onclick="checkPassword()">检测强度</button>
    <p id="result"></p>

    <script>
    function checkPassword() {
        var pwd = document.getElementById("pwdInput").value;
        var result = document.getElementById("result");
        var len = pwd.length;

        if (len === 0) {
            result.innerHTML = "⚠️ 请输入密码";
            result.style.color = "gray";
        } else if (len < 6) {
            result.innerHTML = "❌ 弱密码(少于6位)";
            result.style.color = "red";
        } else if (len < 10) {
            result.innerHTML = "⚡ 中等强度(6-9位)";
            result.style.color = "orange";
        } else {
            result.innerHTML = "✅ 强密码(10位以上)";
            result.style.color = "green";
        }
    }
    </script>

</body>
</html>

📖 逐行讲解

1
<input type="password" id="pwdInput">
和案例一的输入框几乎一样,唯一的区别是 type="password"。这样用户输入的内容会显示成小圆点,不会被旁边的人看到。这就是"密码输入框"。
2
var pwd = document.getElementById("pwdInput").value;
和案例一第5行一样的套路:找到输入框 → 取出用户输入的密码 → 存到变量 pwd 里。
3
var result = document.getElementById("result");
提前找到那个要显示结果的 <p> 标签,存到变量 result 里。为什么要提前存?因为下面要多次用到这个元素(改内容、改颜色),存到变量里可以少写很多重复代码。
💬 就像你要去隔壁班找同学帮忙,去了好几次,不如直接把人拉过来坐旁边。
4
var len = pwd.length;
.length 是字符串自带的一个属性,告诉你这个字符串有多少个字符。比如用户输入了 "abc123",那 pwd.length 就是 6。我们把它存到 len 变量里,方便后面判断。
5
if (len === 0) { ... } else if (len < 6) { ... } else if (len < 10) { ... } else { ... }
这就是条件判断,JavaScript 会从上往下依次检查
① 长度是0吗?(什么都没输入)→ 显示"请输入密码",颜色灰色
② 长度小于6吗?→ 显示"弱密码",颜色红色
③ 长度小于10吗?(到这里说明已经 ≥6 了)→ 显示"中等",颜色橙色
④ 以上都不满足?(说明 ≥10)→ 显示"强密码",颜色绿色
注意:只会执行其中一个分支,一旦命中就跳过剩下的。
💬 类比:就像考试成绩分等级——60分以下不及格,60-79中等,80-89良好,90以上优秀。每个分数只属于一个等级。
6
result.style.color = "red";
这行是用 JavaScript 直接修改 CSS 样式result 是我们之前找到的那个 <p> 元素,.style.color 对应 CSS 里的 color 属性。赋值为 "red" 就会让文字变成红色。JavaScript 可以修改任何 CSS 属性!
💬 记住公式:元素.style.CSS属性名 = "值"

我们来演示一下。👉 现场演示

我先输入 "123"——⏸ 点击检测——红色!弱密码,只有3位。

我再输入 "abc12345"——⏸ 点击检测——橙色!中等,8位。

再试 "MyP@ssw0rd2024"——⏸ 点击检测——绿色!强密码,14位。

大家看,同一个函数,根据不同的输入,走不同的 if 分支,显示不同的结果和颜色。这就是"条件判断"的威力

▶ 现场演示

(结果会显示在这里)
3 案例三:jQuery 动态名片

学会三件事 → 引入 jQuery 库、$() 选择器、.click() / .text() / .toggleClass()

第三个案例,我们要用一个叫 jQuery 的"工具库"。

⏸ 先解释什么是jQuery 前面两个案例我们写了很多 document.getElementById,写起来很长对吧?jQuery 就是别人写好的一个 JavaScript 工具包,它的核心思想是:"用更少的代码做更多的事"。jQuery 把很多复杂的操作都简化了。

举个例子:原生 JS 写 document.getElementById("name"),jQuery 只需要写 $("#name")。是不是短多了?

我们这个案例做一个"个人名片",可以修改名字、切换主题。

💡 这个案例要教的知识点

📦
引入 jQuery— 在 <head> 里加一行 <script src="jquery的网址">,浏览器就会去下载这个工具库。引入之后就可以使用 $() 了。
🎯
$("选择器")— jQuery 的核心!$ 就是 jQuery 的缩写。$("#xxx") 按 id 找元素,$(".xxx") 按 class 找元素。和 CSS 选择器写法一模一样。
✏️
.val() / .text() / .toggleClass()
.val() = 获取输入框的值(等于原生的 .value)
.text("新内容") = 修改文字(等于原生的 .innerHTML)
.toggleClass("类名") = 如果有这个 class 就删掉,没有就加上(用来切换状态,比如切换深色模式)
完整代码 demo3_card.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>jQuery 个人名片</title>
    <!-- ★ 引入 jQuery 库(必须在自己的代码之前引入) -->
    <script src="https://cdnjs.cloudflare.com/.../jquery.min.js"></script>
</head>
<body>

    <div id="card">
        <h2 id="cardName">张三</h2>
        <p id="cardBio">保山学院 · 大数据学院</p>
        <span class="hobby">编程</span>
        <span class="hobby">游戏</span>
    </div>

    <input type="text" id="newName" placeholder="输入新名字">
    <button id="btnChange">修改名字</button>
    <button id="btnTheme">切换主题</button>

    <script>
    // 点击"修改名字"按钮时执行
    $("#btnChange").click(function() {
        var newName = $("#newName").val();
        if (newName !== "") {
            $("#cardName").text(newName);
        }
    });

    // 点击"切换主题"按钮时执行
    $("#btnTheme").click(function() {
        $("#card").toggleClass("dark-mode");
    });
    </script>

</body>
</html>

📖 逐行讲解

1
<script src="https://...jquery.min.js"></script>
这行是在引入 jQuery 库src 指向一个网址,浏览器会从这个网址下载 jQuery 的代码。引入之后,我们就可以在自己的代码里使用 $ 了。
注意:这行必须写在你自己的 <script> 之前,因为浏览器从上往下执行,如果你先用 $ 再引入 jQuery,浏览器就会报错"不认识 $"。
💬 类比:这就像先安装微信APP,才能用微信发消息。引入 jQuery 就是"安装"。
2
$("#btnChange").click(function() { ... });
这一行做了三件事:
$("#btnChange") — 用 jQuery 找到 id 为 "btnChange" 的按钮。# 表示"按 id 找",和 CSS 一模一样。
.click(...) — 给这个按钮绑定一个"点击事件"。效果等同于 HTML 里写 onclick,但这是 jQuery 推荐的写法。
function() { ... } — 这个没有名字的函数叫"匿名函数",就是点击后要执行的代码。
💬 对比原生写法:原来要在 HTML 里写 onclick="xxx()",现在可以在 JS 里统一管理,代码更整洁。
3
var newName = $("#newName").val();
$("#newName") 找到输入框,.val() 获取它的值。
这和原生 JS 的 document.getElementById("newName").value 效果完全一样,但写法短了一半。
4
$("#cardName").text(newName);
.text(newName) 把找到的元素的文字内容修改为 newName 的值。比如 newName 是"李四",那名片上的名字就从"张三"变成"李四"了。
5
$("#card").toggleClass("dark-mode");
.toggleClass("dark-mode") 的意思是:切换这个元素身上有没有 "dark-mode" 这个 CSS 类名。
第一次点:加上 "dark-mode" → 名片变深色
再点一次:去掉 "dark-mode" → 名片变回来
像一个开关一样,点一下开,再点一下关。
💬 很多网站的"深色模式切换"按钮,背后原理就是 toggleClass。

我们来演示一下。👉 现场演示

我输入"李四",点"修改名字"——⏸ 点击——看,名片上的名字变了!头像也跟着变了。

再点"切换主题"——⏸ 点击——变成深色了!再点一下——⏸ 点击——又变回来了。这就是 toggleClass 的开关效果。

▶ 现场演示

张三
保山学院 · 大数据学院
编程 游戏 音乐

🆚 原生 JS vs jQuery 写法对比

原生 JavaScript(写起来长)
document.getElementById("cardName")
  .innerHTML = "李四";
jQuery(写起来短)
$("#cardName").text("李四");

jQuery 的口号:Write Less, Do More(写更少的代码,做更多的事)

好,案例三教了 jQuery 的基本用法。核心就是一个 $() 选择器,学会它就能用 jQuery 做很多事。选择器语法和 CSS 一样:# 找 id,. 找 class,直接写标签名找标签。

📝 今日小结 & 作业布置

用3分钟收尾

好,我们来回顾一下今天的内容。今天一共做了三个案例,学了6个核心概念:

🧠 今天学到的 6 个核心概念

📦
var 变量
存储数据的盒子
⚙️
function 函数
把代码打包成工具
👆
onclick 事件
点击时触发函数
🔍
getElementById
按 id 找页面元素
🎯
$() 选择器
jQuery 找元素的方式
.text() .css()
修改内容和样式

下节课是上机课。我会发一个 HTML 文件给大家,上面有几道编程题。题目是选择填空的形式——代码框架已经写好了,关键位置留了空,你们从选项里选出正确的代码填进去。填对了,网页的交互效果就能跑起来。

最后还有一道拔高题,需要自己写代码,不给选项。能做出来的同学加分。