跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScriptNode.js大前端

Web 前端核心 API 入门:变量声明、DOM 操作与定时器

Web 前端核心 API 实战涵盖了变量声明规范、DOM 元素获取与属性修改、类名操作技巧及表单数据处理。重点解析 data 自定义属性用法,深入讲解 setTimeout 与 setInterval 定时器的异步机制及内存泄漏预防。内容适合前端初学者快速掌握浏览器环境下的基础交互逻辑与最佳实践。

孤勇者发布于 2026/3/26更新于 2026/8/2450 浏览
Web 前端核心 API 入门:变量声明、DOM 操作与定时器

变量声明规范

JavaScript 中的变量声明主要有 var、let 和 const 三种方式。虽然旧版本常用 var,但现代开发中更推荐 let 和 const。

var 存在变量提升现象,允许重复声明,且作用域仅限于函数或全局,容易在块级作用域(如 if、for)外被意外访问,导致逻辑错误。

let 不允许重复声明,不存在变量提升,必须先声明后使用,且具备块级作用域。

const 必须初始化赋值,同样具有块级作用域,适合声明不可变的常量或引用类型。

建议: 默认优先使用 const 避免意外修改,必要时使用 let,尽量避免使用 var。

DOM 元素获取与操作

获取 DOM 元素

在 CSS 选择器方面,我们通常使用 document.querySelector('selector') 获取第一个匹配元素,或使用 document.querySelectorAll('selector') 获取所有匹配元素(返回静态 NodeList),它们支持复杂的 CSS 选择语法。

  • 类选择器
const firstItem = document.querySelector('.list-item');
const allItems = document.querySelectorAll('.list-item');
  • ID 选择器 使用 # 前缀匹配元素的 id 属性。
const name = document.querySelector('#username');
  • 标签选择器 直接使用 HTML 标签名。
const body = document.querySelector('body');

除了上述方法,还可以通过以下标准 API 获取元素:

  1. 通过 ID 获取:document.getElementById('id'),返回匹配的第一个元素,不存在则返回 null。
  2. 通过类名获取:document.getElementsByClassName('class'),返回动态的 HTML 集合(类数组对象)。
  3. 通过标签名获取:document.getElementsByTagName('tag'),返回包含所有匹配标签的动态 HTML 集合。

修改元素内容与属性

内容修改

修改 DOM 元素内容主要通过 innerHTML、textContent 和 innerText 实现。

  • innerHTML:可解析 HTML 标签,适合动态插入带格式的内容。
  • textContent:原样显示文本,忽略 HTML 标签。
  • innerText:考虑 CSS 样式,不显示隐藏元素内容。
const element = document.getElementById('target');
element.innerHTML = '<strong>加粗文本</strong>'; // 解析 HTML
element.textContent = '<strong>纯文本显示</strong>'; // 不解析 HTML
属性修改

标准 HTML 属性可通过元素对象直接访问或使用 setAttribute 方法。自定义属性推荐使用 dataset 或 setAttribute 操作,移除属性使用 removeAttribute。

// 修改标准属性
const img = document.querySelector('img');
img.src = 'new-image.jpg'; // 直接属性赋值
img.setAttribute('alt', '新图片描述'); // 通用方法

// 操作自定义属性
img.setAttribute('data-custom', 'value');
const customValue = img.dataset.custom; // 通过 dataset 访问
批量处理

通过 querySelectorAll 获取节点列表后,可以使用 forEach 或 for 循环来遍历处理多个元素。

样式与类名操作

classList API

通过 classList 可以精确控制 CSS 类,相比直接修改 className 更安全且不易出错。

  • add(className):添加一个或多个类名。
  • remove(className):删除一个或多个类名。
  • toggle(className):切换类名(存在则删除,不存在则添加)。
  • contains(className):判断是否包含某个类名,返回布尔值。
  • replace(oldClass, newClass):替换类名。
const box = document.getElementById('box');
box.classList.add('active'); // 添加类
box.classList.remove('inactive'); // 移除类
box.classList.toggle('visible'); // 切换类
box.classList.replace('big', 'small'); // 替换类

注意事项:

  1. 类名参数不要加 .(例如写 add('active') 而非 add('.active'))。
  2. 所有方法都支持传入多个类名(用逗号分隔)。
  3. 兼容性良好,支持 IE10+ 及所有现代浏览器。
直接修改 style 属性

可以通过 JavaScript 直接修改元素的 style 属性,适用于动态调整样式或覆盖内联样式。注意 CSS 属性名需转换为驼峰命名(如 font-size 变为 fontSize),数字类样式必须带单位。

<!DOCTYPE html>
<html>
<body>
<div id="myBox">测试盒子</div>
<button onclick="changeStyle()">修改样式</button>
<script>
const box = document.getElementById('myBox');
function changeStyle() {
    box.style.backgroundColor = 'red';
    box.style.width = '200px';
    box.style.height = '200px';
    box.style.borderRadius = '10px';
}
</script>
</body>
</html>

常见样式属性包括 color、backgroundColor、fontSize、width/height、display 等。清空样式可将值设为空字符串。

表单数据获取

通过 ID 获取

最直接的方式是给表单元素设置唯一 id,然后用 document.getElementById() 获取元素,再通过 .value 属性拿到值。

<form>
    <label>用户名:</label>
    <input type="text" id="username"><br>
    <label>密码:</label>
    <input type="password" id="password"><br>
    <button type="button" onclick="getFormValueById()">获取值</button>
</form>
<script>
function getFormValueById() {
    const username = document.getElementById('username').value;
    const password = document.getElementById('password').value;
    console.log('用户名:', username);
    console.log('密码:', password);
}
</script>
通过表单对象获取

先获取整个表单对象,再通过元素的 name 属性获取对应的值,适合表单元素较多的场景。

<form id="userForm">
    <label>用户名:</label>
    <input type="text" name="username"><br>
    <label>爱好:</label>
    <input type="checkbox" name="hobby" value="读书">读书
    <input type="checkbox" name="hobby" value="运动">运动<br>
    <button type="button" onclick="getFormValueByForm()">获取值</button>
</form>
<script>
function getFormValueByForm() {
    const form = document.getElementById('userForm');
    const username = form.username.value;
    
    const hobbies = [];
    form.hobby.forEach(item => {
        if (item.checked) hobbies.push(item.value);
    });
    console.log('爱好:', hobbies);
}
</script>

H5 自定义属性 data-

定义与操作

自定义属性必须以 data- 为前缀,后面跟任意名称(建议小写、用连字符分隔)。在 JavaScript 中操作时,推荐使用 dataset,它会自动去掉 data- 前缀并将连字符转为驼峰命名。

<div id="user" data-id="1001" data-user-name="张三"></div>
const userDiv = document.getElementById('user');
console.log(userDiv.dataset.id); // 输出:1001
console.log(userDiv.dataset.userName); // 输出:张三

// 设置自定义属性
userDiv.dataset.age = 25;

// 删除自定义属性
delete userDiv.dataset.age;

注意: dataset 读取的值都是字符串类型,如果是数字或布尔值需要手动转换。不要存储敏感数据,因为可以在控制台直接查看。

定时器详解

JavaScript 提供了两种核心定时器函数,都属于 window 对象,分别用于一次性延时执行和周期性重复执行。

setTimeout:一次性延时

setTimeout() 用于指定一段时间后执行一次函数,执行后自动失效。

// 基础用法
const timerId = setTimeout(() => {
    alert('3 秒到了!');
}, 3000);

// 停止任务
function stopMyTimeout() {
    clearTimeout(timerId);
}

setInterval:周期性重复

setInterval() 用于每隔指定时间重复执行函数,直到手动停止。

let count = 10;
const intervalId = setInterval(() => {
    count--;
    if (count <= 0) {
        clearInterval(intervalId);
        alert('倒计时结束!');
    }
}, 1000);

// 停止任务
function stopMyInterval() {
    clearInterval(intervalId);
}

关键注意事项

  1. 异步特性:定时器的 delay 是'最早执行时间',如果主线程有耗时任务(如复杂计算),定时器会等待主线程空闲后才执行。
  2. 清除定时器:页面卸载或组件销毁前,必须清除未执行的定时器,否则会导致内存泄漏。清除的前提是保存 timerId,不能使用匿名变量。

总结来说,setTimeout 适合单次延时任务,setInterval 适合轮询或倒计时。核心要点是理解其异步机制,并务必保存 timerId 以便及时清理。

目录

  1. 变量声明规范
  2. DOM 元素获取与操作
  3. 获取 DOM 元素
  4. 修改元素内容与属性
  5. 内容修改
  6. 属性修改
  7. 批量处理
  8. 样式与类名操作
  9. classList API
  10. 直接修改 style 属性
  11. 表单数据获取
  12. 通过 ID 获取
  13. 通过表单对象获取
  14. H5 自定义属性 data-
  15. 定义与操作
  16. 定时器详解
  17. setTimeout:一次性延时
  18. setInterval:周期性重复
  19. 关键注意事项
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Naiz AI:从语义到像素,全链路重构视频数字孪生
  • OpenCLaw Web UI 访问失败排查与配置修复方案
  • ClawX 完整安装指南(Windows/macOS/Linux)
  • CSS 元素显示模式详解:块级、行内与行内块
  • 视觉 - 语言建模综述:核心范式与评估实践
  • STM32 标准库、HAL 库与 LL 库静态库创建实战指南
  • 鸿蒙金融理财全栈项目:生态合作、用户运营与数据变现
  • DeepSeek 在主流云电脑平台的部署体验对比
  • 链表分割:以指定值 x 为基准划分链表
  • JavaScript 触摸事件详解:touchstart、touchmove 与 touchend 实战
  • ComfyUI 动画生成工作流:制作连续帧 AI 视频完整流程
  • ComfyUI Prompt Control 提示词控制详解
  • 手机快速去除豆包 AI 视频水印的实用方案
  • MacOS 多合一启动盘制作与系统降版本指南
  • Python 虚拟环境搭建与 PyCharm 配置实战
  • RTX50 系显卡与 CUDA、PyTorch、Python 版本对应关系整理
  • C++ 继承机制详解
  • PyTorch 生成式人工智能:StyleGAN 详解与实现
  • Ubuntu ARM64 设备安装 Chromium 浏览器
  • Linux 操作系统全面解析:特点、发行版与应用场景

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online