javascript实现收货地址增删改查,核心是用数组管理数据、dom操作同步界面:1.数组存地址对象并用唯一id标识;2.渲染列表时绑定data-id;3.共用表单通过隐藏域edit-id区分新增/编辑;4.删除前确认并过滤数组;5.注意表单校验、id类型统一、状态重置等细节。

用 JavaScript 实现收货地址的增删改查,核心是操作 DOM + 管理本地数据(比如用数组模拟数据库),不依赖后端也能跑通完整交互流程。重点在于数据和界面同步、表单状态控制、以及避免常见坑(比如重复提交、删除错项、编辑时表单没回填)。
一、用数组管理地址数据
先定义一个全局(或模块内)的地址列表,每条地址是对象,包含 id(唯一标识)、name、phone、province、city、area、detail 等字段:
let addresses = [
{ id: 1, name: '张三', phone: '13800138000', province: '广东省', city: '深圳市', area: '南山区', detail: '科技园科发路2号' },
{ id: 2, name: '李四', phone: '13900139000', province: '北京市', city: '北京市', area: '朝阳区', detail: '建国路8号' }
];
id 必须存在且唯一,用于精准定位——新增用 Date.now() 或递增计数器生成;删除/编辑都靠它匹配。
二、渲染地址列表(查)
写一个函数把 addresses 渲染成 HTML 列表,每个地址项带「编辑」「删除」按钮,并绑定 data-id 属性:
function renderList() {
const listEl = document.getElementById('address-list');
listEl.innerHTML = addresses.map(addr => `
<div class="address-item" data-id="${addr.id}">
<div>
<strong>${addr.name}</strong> ${addr.phone}</div>
<div>${addr.province} ${addr.city} ${addr.area} ${addr.detail}</div>
<div>
<button onclick="editAddress(${addr.id})">编辑</button>
<button onclick="deleteAddress(${addr.id})">删除</button>
</div>
</div>
`).join('');
}
注意:不要用 innerHTML 拼接复杂交互逻辑,这里仅作示例;实际项目建议用模板字符串 + 事件委托优化性能。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
三、添加和编辑共用一个表单(增 & 改)
用同一组 input 控制「新增」和「编辑」状态:
- 表单加一个隐藏字段
<input type="hidden" id="edit-id">,值为空表示新增,有值表示编辑中 - 点击「编辑」时,把对应地址数据填入表单,并设置
edit-id.value = id - 提交时判断:
if (editId.value) { 更新 } else { 新增 } - 提交后清空表单 + 清空 edit-id,再重新渲染列表
function saveAddress() {
const form = document.getElementById('address-form');
const idInput = document.getElementById('edit-id');
const id = idInput.value ? Number(idInput.value) : null;
const addr = {
id: id || Date.now(),
name: form.name.value.trim(),
phone: form.phone.value.trim(),
province: form.province.value,
city: form.city.value,
area: form.area.value,
detail: form.detail.value.trim()
};
if (id) {
const idx = addresses.findIndex(a => a.id === id);
if (idx !== -1) addresses[idx] = addr;
} else {
addresses.push(addr);
}
form.reset();
idInput.value = '';
renderList();
}
四、安全删除与确认机制(删)
直接点就删容易误操作,加个简单确认:
function deleteAddress(id) {
if (!confirm('确定要删除这个收货地址?')) return;
addresses = addresses.filter(addr => addr.id !== id);
renderList();
}
更稳妥的做法是:删除前先在数组里找一遍,确保 id 存在再删;也可给删除按钮加 loading 状态防连点。
不复杂但容易忽略细节:表单校验(手机号格式、必填项)、id 类型保持一致(全用 number 或全用 string)、编辑后取消要重置表单状态、列表为空时显示提示语。把这些补上,就是一个可用的前端地址管理模块。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










