Web APIs

一、变量声明:varletconst

JavaScript 中有三种声明变量的方式:

  • var:ES5 及之前的标准写法,存在变量提升和函数作用域的问题。
  • let:块级作用域,可重新赋值。
  • const:块级作用域,不可重新赋值(但对象属性可变)。

✅ 推荐用法:

  1. 优先使用 const:语义更清晰,表示该变量不会被重新赋值。
  2. 如果发现后续需要修改变量值,再改用 let
js 复制代码
const PI = 3.14; // 不会被重新赋值
let count = 0;
count++; // 合法操作

❓为什么 const 声明的对象可以修改属性?

因为 const 保证的是引用地址不变,而对象是引用类型,只要地址不变,里面的属性是可以修改的。

js 复制代码
const person = { name: 'Tom' };
person.name = 'Jerry'; // ✅ 合法
person = {}; // ❌ 报错:Assignment to constant variable.

🔍 建议 :对于数组和对象,推荐使用 const 来声明,防止意外改变引用地址。


二、Web APIs 简介

Web APIs 是浏览器提供给 JavaScript 使用的一些接口,主要用来操作网页内容(DOM)和浏览器功能(BOM)。

  • DOM(文档对象模型):用于操作 HTML 内容。
  • BOM(浏览器对象模型):用于操作浏览器窗口、历史记录、导航等。

三、DOM 操作详解

1️⃣ DOM 树的概念

HTML 文档以树状结构呈现,称为 DOM 树。它直观地展示了标签之间的父子关系,便于我们通过 JavaScript 遍历和操作页面元素。


2️⃣ 获取 DOM 元素

✅ 单个元素获取

js 复制代码
const firstLi = document.querySelector('ul li:first-child');

✅ 多个元素获取

js 复制代码
const allLis = document.querySelectorAll('ul li');

⚠️ 注意:querySelectorAll() 返回的是一个伪数组,不能直接调用 pop()push() 等方法,必须通过遍历处理。

js 复制代码
const lis = document.querySelectorAll('.nav li');
for (let i = 0; i < lis.length; i++) {
  console.log(lis[i]);
}

3️⃣ 修改元素内容

innerText vs innerHTML

方法 是否解析 HTML 用途说明
innerText ❌ 不解析 显示纯文本
innerHTML ✅ 解析 插入 HTML 内容
js 复制代码
const box = document.querySelector('.box');
box.innerText = '我是一个盒子'; // 显示纯文本
box.innerHTML = '<strong>我要更换</strong>'; // 显示加粗文字

4️⃣ 修改样式

可以通过 .style 属性动态修改元素样式。

css 复制代码
.box {
  width: 200px;
}
js 复制代码
const box = document.querySelector('.box');
box.style.width = '300px';

四、实战案例:随机轮播图

数据结构

js 复制代码
const sliderData = [
  { url: 'image1.jpg', title: '标题1', color: '#f00' },
  { url: 'image2.jpg', title: '标题2', color: '#0f0' },
  // ...
];

实现代码

js 复制代码
const random = parseInt(Math.random() * sliderData.length);

const img = document.querySelector('.slider-wrapper img');
img.src = sliderData[random].url;

const p = document.querySelector('.slider-footer p');
p.innerHTML = sliderData[random].title;

const footer = document.querySelector('.slider-footer');
footer.style.backgroundColor = sliderData[random].color;

const li = document.querySelector(`.slider-indicator li:nth-child(${random + 1})`);
li.classList.add('active');

五、表单与交互:倒计时按钮

HTML 结构

html 复制代码
<button class="btn" disabled>我已经阅读用户协议(60)</button>

JS 实现倒计时逻辑

js 复制代码
const btn = document.querySelector('.btn');
let i = 5;
let timer = setInterval(() => {
  i--;
  btn.innerHTML = `我已经阅读用户协议(${i})`;
  if (i === 0) {
    clearInterval(timer);
    btn.disabled = false;
    btn.innerHTML = '同意';
  }
}, 1000);

效果预览


六、总结

  • const 是首选,除非你需要重新赋值。
  • 对象和数组应使用 const 声明,因其引用地址不变即可。
  • DOM 操作是前端开发的基础技能,熟练掌握选择器和修改方法至关重要。
  • 利用 Web APIs 可以轻松实现丰富的网页交互效果,如轮播图、倒计时按钮等。
相关推荐
双向3320 分钟前
RAG的下一站:检索增强生成如何重塑企业知识中枢?
前端
拖拉斯旋风22 分钟前
从零开始:使用 Ollama 在本地部署开源大模型并集成到 React 应用
前端·javascript·ollama
asing30 分钟前
🤯 为什么我的收银台在鸿蒙系统“第一次返回”死活拦不住?一次差点背锅的排查实录
前端·harmonyos
德育处主任31 分钟前
『NAS』在群晖部署图片压缩工具-Squoosh
前端·javascript·docker
Hao_Harrision33 分钟前
50天50个小项目 (React19 + Tailwindcss V4) ✨| ThreeDBackgroundBoxes(3D背景盒子组件)
前端·3d·typescript·react·tailwindcss·vite7
加个鸡腿儿36 分钟前
经验分享2:SSR 项目中响应式组件的闪动陷阱与修复实践
前端·css·架构
心.c1 小时前
如何基于 RAG 技术,搭建一个专属的智能 Agent 平台
开发语言·前端·vue.js
智航GIS1 小时前
10.7 pyspider 库入门
开发语言·前端·python
华仔啊2 小时前
写 CSS 用 px?这 3 个单位能让页面自动适配屏幕
前端·css
Van_captain2 小时前
rn_for_openharmony常用组件_Breadcrumb面包屑
javascript·开源·harmonyos