第13章 JavaScript入门

给网页装上大脑 | 课型:理实一体课 | 建议课时:3节

🏠 返回总目录 / 第13章

🎯 学习目标

知识目标

  • 掌握JS在HTML中的引入方式与位置
  • 掌握DOM查询:getElementById/querySelector
  • 掌握事件监听addEventListener
  • 了解常用事件类型与作用域

能力目标

  • 能实现点击切换显示/隐藏的交互
  • 能读写元素的内容、类名与样式
  • 能用console.log调试程序

德育目标

  • 培养"小步验证"的编程习惯
  • 理解交互设计中的用户反馈意识

教学重点

  • script标签位置与defer
  • DOM查询与修改
  • addEventListener事件绑定

教学难点

  • DOM加载时机(脚本在元素之前执行的问题)
  • classList与直接改style的选择

💻 实例演示1个实例 · 可在线运行

▶ 阅读更多/收起

点击按钮展开收起长文,按钮文字同步切换——DOM与事件的入门实战。

新窗口运行 下载源码

操作步骤

  1. 打开demo1.html,点击按钮观察展开/收起
  2. 打开Console,观察每次点击的日志输出
  3. 用Elements面板观察show类的添加与移除
  4. 把toggle改为add,连续点击观察问题
  5. 修改script位置到head中(不加defer),观察按钮失效并思考原因

效果观察点

  • classList.toggle自动切换类
  • 按钮文字随状态同步更新
  • 脚本在元素前执行会获取不到DOM
查看核心代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>阅读更多</title>
<style>
  body { font-family: "Microsoft YaHei", sans-serif; max-width: 640px; margin: 40px auto; padding: 0 16px; color: #1f2a33; }
  #more { display: none; }
  #more.show { display: block; }
  button { background: #0f8c7f; color: #fff; border: none; padding: 10px 24px;
           border-radius: 8px; cursor: pointer; font-size: 15px; }
  button:hover { background: #123a52; }
  #log { background: #f2f6f8; padding: 10px; border-radius: 6px; font-size: 13px; color: #6b8a99; margin-top: 16px; }
</style>
</head>
<body>
  <h1>三亚的夏天</h1>
  <p>三亚位于海南岛最南端,是中国著名的热带滨海旅游城市……</p>
  <div id="more">
    <p>这里常年温暖,椰风海韵。亚龙湾、天涯海角、南山文化旅游区都是著名景点。</p>
    <p>对于学习前端的同学来说,在美景中写代码也是一种幸福。</p>
  </div>
  <p><button id="btn">阅读更多</button></p>
  <div id="log">控制台:等待操作……</div>
<script>
  const btn = document.getElementById('btn');
  const more = document.getElementById('more');
  const log = document.getElementById('log');
  btn.addEventListener('click', function () {
    more.classList.toggle('show');
    const opened = more.classList.contains('show');
    btn.textContent = opened ? '收起' : '阅读更多';
    log.textContent = '控制台:点击了按钮,当前状态 = ' + (opened ? '展开' : '收起');
    console.log('toggle执行,show类存在?', opened);
  });
</script>
</body>
</html>

📋 实习任务书

任务目标:独立完成"阅读更多"交互并理解DOM操作三板斧

任务内容与评分
任务1:正确引入JS并输出第一条console.log(10分)
任务2:用getElementById获取元素并修改文字(20分)
任务3:实现点击切换显示/隐藏(30分)
任务4:按钮文字随状态切换(20分)
任务5:写出script放head中失效的原因及两种解决方案(20分)

自我评价

📚 课后作业与预习